连接数据库问题,急

Jurek 2004-12-06 09:00:42
怎样用代码来实现数据库的连接,不用控件。在动态链接库dll中连接数据库?
...全文
232 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jurek 2004-12-06
  • 打赏
  • 举报
回复
可是从delphi程序中对此上的dll文件传参数
function querystudentcheekcard(number:integer):boolean;stdcall;
当传过去随意的一个整数后,接收的number的值都为1243260,这是怎回事啊?
Jurek 2004-12-06
  • 打赏
  • 举报
回复
ok
dejiang 2004-12-06
  • 打赏
  • 举报
回复
我一般用一个udl数据链接文件,这样可以通过这个文件配置数据库。
IF Conn.Connected then Conn.Connected := False;

conn.ConnectionString:='FILE NAME='+ExtractFilePath(Application.ExeName)+'datebase.udl';
Try
Conn.open;
Except
MessageDlg('数据库连接失败!',Mterror,[mbok],0);
end;
alonesnake 2004-12-06
  • 打赏
  • 举报
回复
aaaaaaaaaaaaaaaaa
pdbird 2004-12-06
  • 打赏
  • 举报
回复
uses adodb,....

var a:tadoconnection;
b:tadoquery;
begin
a := tadoconnection.create;// 要先创建才行。
CoInitialize(nil);
a.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pause;Data Source=SERVER2';
a.LoginPrompt:=false;
a.Connected:=true;
b.Connection:=a;
b.SQL.Clear;
b.Active:=false;
b.SQL.Add('select * from users where users='+quotedstr(number));
b.Active:=true;
Jurek 2004-12-06
  • 打赏
  • 举报
回复
force2004():
无窗体的情况下怎样在程序中止时有系统释放改对象所占用的资源?
Jurek 2004-12-06
  • 打赏
  • 举报
回复
a := tadoconnection.create //编译不能通过啊
force2004 2004-12-06
  • 打赏
  • 举报
回复
对象的创建函数你最好传递一个参数给它:self,这样可以在程序中止时有系统释放改对象所占用的资源。
force2004 2004-12-06
  • 打赏
  • 举报
回复
你的a和b对象在调用以前要先创建,你在begin后面加入a := tadoconnection.create;b := tadoquery.create;试试
force2004 2004-12-06
  • 打赏
  • 举报
回复
搂主把问题说的在清楚一点,你不用控件创建了连接要干什么又能干什么?
Jurek 2004-12-06
  • 打赏
  • 举报
回复
uses adodb,....

var a:tadoconnection;
b:tadoquery;
begin
CoInitialize(nil);
a.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pause;Data Source=SERVER2';
a.LoginPrompt:=false;
a.Connected:=true;
b.Connection:=a;
b.SQL.Clear;
b.Active:=false;
b.SQL.Add('select * from users where users='+quotedstr(number));
b.Active:=true;

我用这一段代码,但编译没问题,运行就出错了
searoom 2004-12-06
  • 打赏
  • 举报
回复
那不叫需要控件,TADOConnection 是用来连接数据库的 ADO 控件,这个是必须的

可以理解为数据库连接后的接收点
否则,你怎么知道连接好了呢?

(顺便一句:静下心来看看书吧,会比来 CSDN 问问题好多了)
searoom 2004-12-06
  • 打赏
  • 举报
回复
说明一下:

我这几个函数都是写在一个类中的,还使用到了一个用的错误信息的函数 GetConnErrs
所以,你看看那些 连接参数就可以了

使用 VFPOLEDB 需要安装他的驱动程序

function TSeaFun.GetConnErrs(Conn: TADOConnection): string;
var
i:integer;
begin
result:='';
if not Assigned(Conn) then
exit;
if Conn.Errors.Count>0 then
begin
for i:=0 to Conn.Errors.Count-1 do
if result='' then
result:=Conn.Errors.Item[i].Description
else
result:=result+#13#10+Conn.Errors.Item[i].Description;
end;
end;
Jurek 2004-12-06
  • 打赏
  • 举报
回复
你这个不是也需要控件吗
searoom 2004-12-06
  • 打赏
  • 举报
回复
5. 利用 ODBC 连接 DBF
function TSeaFun.ConnDBF_odbc(Conn: TADOConnection; FileName: string;
var sErr: string; ConnMode: integer): boolean;
var
str:string;
begin
//判断连接控件是否存在
if not Assigned(Conn) then
begin
result:=false;
sErr:='所需 TADOConnection 控件不存在';
exit;
end;

//连接数据库
str:='Driver={Microsoft Visual Foxpro Driver};'+
'sourcetype=DBC;'+
'sourceDB='+ FileName +';'+
'Exclusive=No;';
try
Conn.Close;
Conn.Mode:=GetConnMode(ConnMode);
Conn.LoginPrompt:=false;
Conn.ConnectionString:=str;
Conn.Open;
except
result:=false;
sErr:=GetConnErrs(Conn);
exit;
end;

result:=true;
end;

6.利用 VFPOLEDB 连接 DBF 或 DBC
function TSeaFun.ConnVFP(Conn: TADOConnection; PathSource: string;
var sErr: string; ConnMode:integer): boolean;
var
str:string;
begin
//判断连接控件是否存在
if not Assigned(Conn) then
begin
result:=false;
sErr:='所需 TADOConnection 控件不存在';
exit;
end;

//连接数据库
str:='Provider=VFPOLEDB.1;'+
'Data Source='+ PathSource +';'+
'Password="";'+
'Mode=ReadWrite;'+
'Collating Sequence=MACHINE';
try
Conn.Close;
Conn.Mode:=GetConnMode(ConnMode);
Conn.LoginPrompt:=false;
Conn.ConnectionString:=str;
Conn.Open;
except
result:=false;
sErr:=GetConnErrs(Conn);
exit;
end;

result:=true;
end;

7. 连接 Excell 文件(Excel 也可以看作成数据库的)
function TSeaFun.ConnXLS(Conn: TADOConnection; FileName: string;
var sErr: string): boolean;
var
str:string;
begin
//判断连接控件是否存在
if not Assigned(Conn) then
begin
result:=false;
sErr:='所需 TADOConnection 控件不存在';
exit;
end;

//判断文件是否存在
if not FileExists(FileName) then
begin
result:=false;
sErr:='文件 '+FileName+' 不存在';
exit;
end;

//连接数据库
str:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+filename+';'+
'Extended Properties="Excel 8.0;HDR=Yes"';
try
Conn.Close;
Conn.LoginPrompt:=false;
Conn.ConnectionString:=str;
Conn.Open;
except
result:=false;
sErr:=GetConnErrs(Conn);
exit;
end;

result:=true;
end;
searoom 2004-12-06
  • 打赏
  • 举报
回复
几个用来连接数据库的函数:

1. Mss

function ConnMss(Conn: TADOConnection; ServerName, DBName, Logid,
PassWord: string; var sErr: string): boolean;
var
str:string;
begin
//判断连接控件是否存在
if not Assigned(Conn) then
begin
result:=false;
sErr:='所需 TADOConnection 控件不存在';
exit;
end;

//连接数据库
str:='Provider=SQLOLEDB.1;'+
'User ID='+Logid+';'+
'Password='+Password+';'+
'Initial Catalog='+DBName+';'+
'Data Source='+ServerName;
try
Conn.Close;
Conn.LoginPrompt:=false;
Conn.ConnectionString:=str;
Conn.Open;
except
result:=false;
sErr:=GetConnErrs(Conn);
exit;
end;
result:=true;
end;

2. MDB
function TSeaFun.ConnMDB(Conn: TADOConnection; FileName: string;
var sErr: string; UserID,Password:string; ConnMode:integer): boolean;
var
str:string;
begin
//判断连接控件是否存在
if not Assigned(Conn) then
begin
result:=false;
sErr:='所需 TADOConnection 控件不存在';
exit;
end;

//连接 mdb 数据库
str:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+filename+';'+
'User Id='+UserID+';Password='+Password;
try
Conn.Close;
Conn.Mode:=GetConnMode(ConnMode);
Conn.LoginPrompt:=false;
Conn.ConnectionString:=str;
Conn.Open;
except
result:=false;
sErr:=GetConnErrs(Conn);
exit;
end;

result:=true;
end;

3. dBase.DBF
function TSeaFun.ConnDBF(Conn: TADOConnection; FileName: string;
var sErr: string; ConnMode:integer): boolean;
var
str:string;
begin
//判断连接控件是否存在
if not Assigned(Conn) then
begin
result:=false;
sErr:='所需 TADOConnection 控件不存在';
exit;
end;

//连接数据库
str:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+FileName+';'+
'Extended Properties=dBase 5.0;'+
'Persist Security Info=False';
try
Conn.Close;
Conn.Mode:=GetConnMode(ConnMode);
Conn.LoginPrompt:=false;
Conn.ConnectionString:=str;
Conn.Open;
except
result:=false;
sErr:=GetConnErrs(Conn);
exit;
end;

result:=true;
end;

4. DSN 的方式连接 DBF
function TSeaFun.ConnDBF_dsn(Conn: TADOConnection; DsnName: string;
var sErr: string; ConnMode: integer): boolean;
var
str:string;
begin
//判断连接控件是否存在
if not Assigned(Conn) then
begin
result:=false;
sErr:='所需 TADOConnection 控件不存在';
exit;
end;

//连接数据库
str:='Provider=MSDASQL.1;Persist Security Info=False;Data Source='+ DsnName;
try
Conn.Close;
Conn.Mode:=GetConnMode(ConnMode);
Conn.LoginPrompt:=false;
Conn.ConnectionString:=str;
Conn.Open;
except
result:=false;
sErr:=GetConnErrs(Conn);
exit;
end;

result:=true;
end;
Jurek 2004-12-06
  • 打赏
  • 举报
回复
ADOConnection1,此对象不存在啊
yingqing 2004-12-06
  • 打赏
  • 举报
回复
ADOConnection1.ConnectionString:=''
roclui 2004-12-06
  • 打赏
  • 举报
回复
海龙的贴子很好!应多加分!但是看书与提问题是不冲突的!

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧