我用下面的方法连接时出了一个怪问题:
Provider=MSDASQL.1;Password=1;Persist Security Info=True;User ID=admin;Extended Properties="driver={Microsoft Access Driver (*.mdb)};dbq=F:\user.mdb;LoginPrompt=False"为什么用这个方法不能使用ADOQusery这个控件?一使用就报错!但是,我可以用ttable控件。本人刚学DELPHI。极菜!请详细讲解。谢谢!
Provider=MSDASQL.1;Password=1;Persist Security Info=True;User ID=admin;Extended Properties="driver={Microsoft Access Driver (*.mdb)};dbq=F:\user.mdb;LoginPrompt=False"为什么用这个方法不能使用ADOQusery这个控件?一使用就报错!但是,我可以用ttable控件。本人刚学DELPHI。极菜!请详细讲解。谢谢!
我在TADOtable控件中设置connectiongstring中的值为上述内容;然后在程序中写如下代码:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update pass set pass="'+pass1.Text+'" ');
ADOQuery1.ExecSQL; ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update pass set state=1 ');
ADOQuery1.ExecSQL;此时就会报错。提示是什么预期值为1。搞不懂是什么意思。但是,我这样写又可以:
pass_table.Open;
pass_table.First;
pass_table.Edit;
pass_table['state']:=1;
pass_table['pass']:=pass1.Text;
pass_table.Post;
pass_table.Close;
Application.MessageBox('密码修改成功,请记住新密码!','系统信息',MB_OK+MB_ICONINFORMATION);
Form_setpass.Close;
这是为什么?而如果我的数据库不加密,则上面的两种方法都是可以的啊!
Provider=MSDASQL.1;Password=1;Persist Security Info=True;User ID=admin;Extended Properties="driver={Microsoft Access Driver (*.mdb)};dbq=F:\user.mdb;LoginPrompt=False;PassWord='密码'"
ADOQuery1.connectiongstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataBaseName+';Persist Security Info=False;Jet OLEDB:Database Password=这里是你的数据库密码;';
adoconnection.connectionstring:='Provider=MSDASQL.1;Password=1;Persist Security Info=True;User ID=admin;Extended Properties="driver={Microsoft Access Driver (*.mdb)};dbq=F:\user.mdb;LoginPrompt=False;PassWord='密码'"';
用下面的方法可以连接上去,并且测试成功。
Provider=MSDASQL.1;Password=数据库的密码;Persist Security Info=True;User ID=admin;Extended Properties="driver={Microsoft Access Driver (*.mdb)};dbq=数据库名;LoginPrompt=False"可是问题在于我连接好了以后可以使用ADOQuery.recourcount来知道数据库中的记录。可是不能使用SQL语句来更新数据库里的表!!运行的时候就会报错。居然说是SQL的语法错!不知道该怎样解决?我真的很菜。谢谢!:)
连WHERE子句都没有,难道你要更改所有数据的状态?