一个简单的数据连接问题

whachun 2007-09-28 11:22:59
我是新手,我想做一个执行数据库的类,下面是我的类内容:
unit clstheAccess;

interface

Uses
SysUtils, Classes, DB, ADODB, Forms, Dialogs;

type
theAccess=class(TDataModule)
AdoConn: TADOConnection;
private
{ Private declarations }
public
procedure Conn;
function ExecuteSQL(strSQL:String;var strMsg:String):integer;
function ExecuteSQL1(strSQL:String;var strMsg:String;var rsReturn:TADOQuery):integer;
{ Public declarations }
end;

var
gtheAccess:theAccess;

implementation

procedure theAccess.Conn;
var
ConnectionString:String;
begin
ConnectionString:='User ID=sa;Password=123456;Data Source=;Initial Catalog=master';
AdoConn.Provider:='SQLOLEDB';
AdoConn.ConnectionString:=ConnectionString;
AdoConn.LoginPrompt:= False;
AdoConn.Mode:= cmShareDenyNone;
AdoConn.Connected:= True;
end;

function theAccess.ExecuteSQL(strSQL: String;var strMsg:String):Integer;
begin
try
if not AdoConn.Connected then Conn;
AdoConn.Execute(strSQL);
strMsg:='执行SQL语句成功';
result:=1;
except
strMsg:='执行SQL语句失败';
result:=0;
end;
end;

function theAccess.ExecuteSQL1(strSQL:String;var strMsg:String;var rsReturn:TADOQuery):integer;
var rs:TADOQuery;
begin
try
rs:=TADOQuery.Create(Application);
rs.Connection:=AdoConn; //这句有错误提示
if not AdoConn.Connected then Conn;
rs.SQL.Clear;
rs.SQL.Add(strSQL);
rs.Open;
rsReturn:=rs;
strMsg:='执行SQL语句成功';
result:=1;
rs.Free;
except
strMsg:='执行SQL语句失败';
result:=0;
end;
end;

end.


请大家帮我看看,这是哪里的错
...全文
190 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
whachun 2007-10-17
  • 打赏
  • 举报
回复
根据楼上的几位指点,那个地方的错误没有了,可新的错误又出来了
procedure theAccess.Conn;
var
ConnectionString:String;
begin
ConnectionString:= 'User ID=sa;Password=123456;Data Source=;Initial Catalog=master ';
AdoConn.Provider:= 'SQLOLEDB '; //这里赋值出错了,真是搞不懂
AdoConn.ConnectionString:=ConnectionString;
AdoConn.LoginPrompt:= False;
AdoConn.Mode:= cmShareDenyNone;
AdoConn.Connected:= True;
end;
在初始化时,出错
hushu02 2007-10-17
  • 打赏
  • 举报
回复


你数据库是用ODBC连接的吧 建议改成ADO
骑牛上铂金 2007-10-17
  • 打赏
  • 举报
回复
Provider为什么不直接写到ConnectionString中呢!
tongjisheng 2007-09-29
  • 打赏
  • 举报
回复
up
starluck 2007-09-29
  • 打赏
  • 举报
回复
Query 本身也不要用:var 去回传啊。直接 function 返回 Query 就行了,最终由调用者释放掉资源。

ILoveFlower 2007-09-29
  • 打赏
  • 举报
回复
up
hongqi162 2007-09-29
  • 打赏
  • 举报
回复
每次执行ExecuteSQL1都要创建出一个TADOQuery来,效率也太低了,,,,不合格 :)
喝口水 2007-09-29
  • 打赏
  • 举报
回复
rs.Connection:=AdoConn; //这句有错误提示 ,
//adoConn你初始过了吗,还没初始化就调用能不出错吗
if not AdoConn.Connected then Conn;

这样
Conn;
rs.Connection:=AdoConn;
骑牛上铂金 2007-09-29
  • 打赏
  • 举报
回复
是什么提示,贴出来看看!
yi10000 2007-09-29
  • 打赏
  • 举报
回复
楼主的代码没什么问题了,呵呵
hongchunliang 2007-09-28
  • 打赏
  • 举报
回复
在调用的时候,首要调用 procedure theAccess.Conn; 过程,否则,你直接调用那个function theAccess.ExecuteSQL1 就会报错的!

2,498

社区成员

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

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