第一次用delphi连接access数据库出现问题 ( 积分: 100 )

  • 主题发起人 主题发起人 ttxiangyou
  • 开始时间 开始时间
T

ttxiangyou

Unregistered / Unconfirmed
GUEST, unregistred user!
用delphi连接access数据库,运行时弹出一个对话框,上面显示的语句如下:
Project SJSC.exe raised exception class EAccessViolation with message
'Access violation at address 0048E72F in module 'SJSC.exe'.Read of address
00000058'.Process stopped.Use Step or Run to continue.
OK Help
是什么缘故呢?
 
用什么控件连接数据库的,在连接的时候有没有测试连接
 
肯定连接配置出错!
 
我建了一个数据模块,然后在里边加一个TADOConnection组件,设置他的connectionstring属性为Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/data/SJSC.mdb;Persist Security Info=False
测试连接也成功。
 
正常情况是不会出现你这种错误的,
你的错误佷明显是指针错误,
把主要代码贴上来,我帮你看看,不然你光这样凭嘴说,别人怎么知道你代码哪有问题呢
 
uData单元代码如下:
unit uData;
interface

uses
SysUtils, Classes, DB, ADODB;

type
TdmPer = class(TDataModule)
acPer: TADOConnection;
private
{ Private declarations }
public
{ Public declarations }
end;

var
dmPer: TdmPer;

implementation

{$R *.dfm}


end.

uLogin单元代码如下:
unit uLogin;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB,uData;

type
TfrmLogin = class(TForm)
Label1: TLabel;
Label2: TLabel;
cmbUserName: TComboBox;
Label3: TLabel;
edtpassword: TEdit;
btnOK: TButton;
Button2: TButton;
procedure btnOKClick(Sender: TObject);
procedure edtpasswordKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmLogin: TfrmLogin;

implementation

{$R *.dfm}

procedure TfrmLogin.btnOKClick(Sender: TObject);
var
Query:TADOQuery;
begin
try
Query.Create(nil);
Query.Connection:=dmPer.acPer;
Query.SQL.Add('select * from Operator where UserName=:UserName and UserPwd=:UserPwd');
Query.Parameters.ParamByName('UserName').Value:=cmbUserName.Text;
Query.Parameters.ParamByName('UserPwd').Value:=edtpassword.Text;
Query.Open;
if(Query.RecordCount=0)then
begin
MessageDlg('请输入正确的用户名和密码',mtError,[mbOK],0);
Exit;
end;
if(Query.FieldByName('Class').AsInteger=0)then
begin

end;
if(Query.FieldByName('Class').AsInteger=1)then
begin

end;
edtpassword.Text:='';
Query.Close;
Query.Free;
except
MessageDlg('连接数据库出错',mtError,[mbOk],0);
end;
end;

procedure TfrmLogin.edtpasswordKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if(key=13)then
btnOKClick(Sender);
end;

procedure TfrmLogin.FormShow(Sender: TObject);
begin
edtpassword.SetFocus;
end;

procedure TfrmLogin.FormCreate(Sender: TObject);
Var
Query:TADOQuery;
begin
try
cmbUserName.Clear;
Query:=TADOQuery.Create(nil);
Query.Connection:=dmPer.acPer;
Query.SQL.Add('select UserName from Operator');
Query.Open;
if(Query.RecordCount=0)then
begin
MessageDlg('没有可以登录的用户名',mtError,[mbOk],0);
Exit;
end
else
Query.First;
while(Query.Eof=false)do
begin
cmbUserName.Items.Add(Query.FieldByName('UserName').AsString);
Query.Next;
end;
except
MessageDlg('连接数据库出错',mtError,[mbOk],0);
end;
end;

end.
 
是的,我也是刚学的,也遇到了同样的问题,用delphi连接一个很简单的ACCESS数据库都会出错,真不知道怎么学下去
 
后退
顶部