一个简单的数据连接问题

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.


请大家帮我看看,这是哪里的错
...全文
218 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 就会报错的!
代码下载链接: https://pan.quark.cn/s/3379ee0243ef 在IAR调试环节中,使用者或许会遭遇各式各样的故障,这些故障可能波及编译、链接以及执行时的情形。下面列出了部分常见的IAR调试故障及其应对措施: 1. **头文件中全局变量的声明**:IAR链接器不允许在头文件里声明全局变量,但容许多个源文件同时引用同一变量。一旦出现此类状况,应将全局变量声明为`extern`类型。例如,错误信息`Error[e27]: Entry "tagData" redefined`可以通过在头文件中附加`extern`关键字来纠正。 2. **隐式指定的函数**:`Error[Pe223]: function "assert_param" declared implicitly`指出函数`assert_param`未被显式地定义。务必确保包含了适宜的头文件,比如`stm32f10x_conf.h`,该文件内含了该函数的原型。倘若已包含,则可能是库文件版本不匹配或项目配置存在疑惑。 3. **无原型指引的函数**:`Error[Pa045]: function "assert_param" has no prototype`与上述情形相似,意指函数缺乏相应的原型声明。仔细核对相关头文件,保证它们在使用前已被适当地引入。 4. **标识符未获定义**:`Error[Pe020]: identifier "RCC_APB2Periph_GPIOC" is undefined`表明某个标识符的定义未能找到,这通常源于未引入必要的头文件。在此情形下,需包含`stm32f10x_rcc.h`。 5. **宏定义与编译文件的矛盾**:若尝试调整设备配置,如从STM...

2,508

社区成员

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

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