我做的是学籍管理系统,用Access建了一个数据库,要实现添加学生信息的功能,可是出现异常信息,不知道是什么地方错了。
下面是我的代码:
procedure TedtStuForm.BtnInsertClick(Sender: TObject);
begin
if RBtnMale.checked then stusex:='男'
else stusex:='女';
if stusno='' then
MessageBox(self.handle,'学号不能为空!','警告',MB_OK+MB_ICONWARNING)
else if stusname='' then
MessageBox(self.handle,'姓名不能为空!','警告',MB_OK+MB_ICONWARNING)
else if sturoom_no='' then
MessageBox(self.handle,'姓名不能为空!','警告',MB_OK+MB_ICONWARNING)
else if stuEmail='' then
MessageBox(self.handle,'姓名不能为空!','警告',MB_OK+MB_ICONWARNING)
else begin
strsql:='insert into Student values('''+stusno+''','''+ stusname+''','''+ stusex+''','''+ sturoom_no+''','''+stuEmail+''')';
with self.ADOQuery1 do
begin
if active then Close;
SQL.Clear;
SQL.Add(strsql) ;
ExecSQL ;
showmessage('添加成功');
end;
end;
end;
下面是异常信息:
Project PStuManage.exe raised exception class EAccessViolation with message 'Access violation at address 1F487CAB in module 'msado15.dll'. Write of address 012B5004'. Process stopped. Use Step or Run to continue.
下面是我的代码:
procedure TedtStuForm.BtnInsertClick(Sender: TObject);
begin
if RBtnMale.checked then stusex:='男'
else stusex:='女';
if stusno='' then
MessageBox(self.handle,'学号不能为空!','警告',MB_OK+MB_ICONWARNING)
else if stusname='' then
MessageBox(self.handle,'姓名不能为空!','警告',MB_OK+MB_ICONWARNING)
else if sturoom_no='' then
MessageBox(self.handle,'姓名不能为空!','警告',MB_OK+MB_ICONWARNING)
else if stuEmail='' then
MessageBox(self.handle,'姓名不能为空!','警告',MB_OK+MB_ICONWARNING)
else begin
strsql:='insert into Student values('''+stusno+''','''+ stusname+''','''+ stusex+''','''+ sturoom_no+''','''+stuEmail+''')';
with self.ADOQuery1 do
begin
if active then Close;
SQL.Clear;
SQL.Add(strsql) ;
ExecSQL ;
showmessage('添加成功');
end;
end;
end;
下面是异常信息:
Project PStuManage.exe raised exception class EAccessViolation with message 'Access violation at address 1F487CAB in module 'msado15.dll'. Write of address 012B5004'. Process stopped. Use Step or Run to continue.
试试改成这样
2 改为:strsql:='insert into Student values('''+stusno+''','''+ stusname+''','''+ stusex+''','''+ sturoom_no+''','''+stuEmail+'''')''
with qryInsert do
begin
close;
sql.clear;
sql.add('insert into student values (:stusno,:stusname,:stusex,:sturoom_no,:stuEmail');
Parameters.ParamByName('stusno').Value :=stusno;
Parameters.ParamByName('stusname').Value :=stusname;
Parameters.ParamByName('stusex').Value :=stusex;
Parameters.ParamByName('sturoom_no').Value :=sturoom_no;
Parameters.ParamByName('stuEmail').Value :=stuEmail;
try
Execsql;
except
end;
end;
sql.add('insert into student values (:stusno,:stusname,:stusex,:sturoom_no,:stuEmail');
Parameters.ParamByName('stusno').Value :=stusno;
Parameters.ParamByName('stusname').Value :=stusname;
Parameters.ParamByName('stusex').Value :=stusex;
Parameters.ParamByName('sturoom_no').Value :=sturoom_no;
Parameters.ParamByName('stuEmail').Value :=stuEmail;
var
sqlstr:string
begin
sqlstr:='insert into aa(a1,a2) values(''%s'',%s);
sqlstr:=format(sqlstr,[a1_,a2_);
with adoqry do
begin
close;
sql.clear;
sql.add(sqlstr);
execsql;
close;
end;
end;
sqlstr:string
begin
sqlstr:='insert into aa(a1,a2) values(''%s'',%s);
sqlstr:=format(sqlstr,[a1_,a2_]);
with adoqry do
begin
close;
sql.clear;
sql.add(sqlstr);
execsql;
close;
end;
end;
sSql : string;
begin
sSql := 'insert into Student values('''+stusno+''','''+ stusname+''','''+ stusex+''','''+ sturoom_no+''','''+stuEmail+'''')'';
with qryInsert do
begin
close;
sql.clear;
sql.add(sSql);
try
Execsql;
except
showmessage('SQL错误!');
end;
end;
end;
ADOQuery1 .Close;
ADOQuery1 .SQL.Clear;
ADOQuery1 .SQL.Add('select * from Student where 1=2');
ADOQuery1 .Open;
ADOQuery1 .append;
ADOQuery1 .FieldByName('stusno').AsString:=stusno;
ADOQuery1 .FieldByName('stusname').AsString:=sstusname;
……
ADOQuery1 .UpdateBatch();