SQL Server数据库连接问题
我做了一个SQL Server数据库连接的DLL,编译通过生成DLL文件,在.exe工程文件调用时出错,大概是溢出,但我直接做成函数调用是可以的,请问是什么意思?错误代码:
Project Project1.exe raised exception class EAccessViolation with message'Access violation at address 004118cc in module 'DATABASEDLL.DLL'.Read of address FFFFFFFF'.Process stopped.Use Step or Run to continue.
DLL文件:
#include <vcl.h>
#include <windows.h>
#include "FormUnit.h"//Form2窗口
#pragma hdrstop
extern "C" __declspec(dllexport) void LinkDatabase(WideString Pwd,WideString UserID,WideString Database,WideString Server); //数据库连接
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
/*
UserID:登录SQL Server用户名, Database:SQL Server数据库名
Server:SQL Server数据库所在的服务器名称 Pwd:登录数据库密码
*/
void LinkDatabase(WideString Pwd,WideString UserID,WideString Database,WideString Server)
{ WideString Link="Provider=SQLOLEDB.1;Password="+Pwd+";Persist Security Info=False;User ID="+UserID+";Initial Catalog="+Database+";Data Source="+Server;
if(Form2->ADOConnection1->Connected==false) //如果没有连接到SQL Server
{ try
{
Form2->ADOConnection1->ConnectionString=Link;
Form2->ADOConnection1->LoginPrompt=true;
Form2->ADOConnection1->Connected=true;
}
catch(...)
{
ShowMessage("数据库连接失败,请联系管理员");
}
}
}
//--------------------------------------------------------------------------------
静态调用:
extern "C" __declspec(dllexport) void LinkDatabase(WideString Pwd,WideString UserID,WideString Database,WideString Server);//声明
void __fastcall TForm1::FormCreate(TObject *Sender)
{
WideString Pwd="",UserID="sa",Database="test",Server="my1";
LinkDatabase(Pwd,UserID,Database,Server);
}
//---------------------------------------------------------------------------