使用ADO对access进行操作遇到的问题的一些记录

来源:互联网 发布:可爱的拍照软件 编辑:程序博客网 时间:2024/05/02 04:33


今天同学要我帮着实现个用户管理的功能,使用access作为后台数据库,在用户管理界面上需要实现删除用户,添加用户,修改用户口令的功能。

       但是实现的过程中也遇到了些许问题

问题一:

            添加新的用户时候,即只需要执行SQL语句中的insert语句,但是执行过程中提示“查询值的数目与目标字段中数目不同”的错误,我查看access数据库,有个id的字段,但是我已经将其设置成自动编号了

源代码如下

void CAccordMangage::OnBTNAccordAdd() {// TODO: Add your control notification handler code hereCString user,password,newpassword;//获取用户名和密码GetDlgItemText(IDC_COMBO_Accord,user);GetDlgItemText(IDC_EDIT_NEWPASSWORD,newpassword);theApp.m_ado.GetRecordset()->raw_Close();CString SQLstr;SQLstr.Format("insert into user values('%s','%s')",user,newpassword);theApp.m_ado.GetRecordset()->raw_Close();theApp.m_ado.OpenRecordset(SQLstr);OnBTNAccordRefresh();}

但是在语句

SQLstr.Format("insert into user values('%s','%s')",user,newpassword);


中values中加一个参数程序就可以运行,即给id字段赋值,但是这违背了设置id为自动编号的初衷,后来发现完美解决这个问题其实很简单,只是语句写错了,应该改成:

SQLstr.Format("insert into user(用户名,密码) values('%s','%s')",user,newpassword);


一定在表名后面加上需要改的字段名。

             总结:虽然这个是个小问题,但是确实不注意很难发现,这个问题折腾了我很长时间,总之数据库的基础知识没有很牢固。sql语句不熟练是个问题.

问题二:

在执行更新语句时候出现问题。

其实这个问题很简单,就是自己粗心将update写成了updata了。确实很悲剧!不过我看到报错“IDispatch error #3092”这个错误,我就知道是我的SQL语句语法写错了,所以很快找到问题所在,我将那个语句在sql server中运行了就直接看出了错误。在运行sql server 发现运行update时候“update”不是关键字,输入“Update”才是!access

却可以。

 问题三:

要及时关闭记录集,发现之前没有注意这个问题。用完后需要及时的关闭记录集,因为打开记录集时需要消耗内存,要用时候在打开!

原创粉丝点击