我的VC++ MFC程序用ODBC连接Access数据库,编译可通过,但运行时会出现“参数不足,期待是1”的提示框,这是什么原因,请高手指点好吗?
这是我的程序:
void CDlg3::OnAdd() 
{
// TODO: Add your control notification handler code here
CAdd dlg;
dlg.DoModal(); //创建CAdd的实例
CAdd m_Add; //如果点击了确定按钮,则开始数据库操作
//创建CUserRecordSet的实例
CUserRecordSet m_UserRecordSet;
try
{
if(m_UserRecordSet.IsOpen())
m_UserRecordSet.Close(); //设置查询备件“AddIP=m_AddIP”
m_UserRecordSet.m_strFilter.Format("AddIP='%s'order by AddIP ASC",
m_Add.m_AddIP.operator LPCTSTR());
//执行查询
m_UserRecordSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
//判断数据库中是否有同名IP,如果有,则退出
if(!m_UserRecordSet.IsEOF())
{
//关闭记录集
m_UserRecordSet.Close();
//弹出警告信息
AfxMessageBox("同名机架已经存在");
//退出函数处理
return;
}
//如果没有同名机架,则执行正常的添加操作
//首先增加一条新记录
    //m_UserRecordSet->MoveLast();
m_UserRecordSet.AddNew();
//然后编辑该条记录的内容
m_UserRecordSet.m_UserAble=m_Add.m_AddIP;
m_UserRecordSet.m_UserName=m_Add.m_AddName;
//最后要将用户信息更新到数据库中
//更新时,要判断当前是否能够进行更新操作
if(m_UserRecordSet.CanUpdate())
{
m_UserRecordSet.Update();
}
//关闭记录集
if(m_UserRecordSet.IsOpen())
m_UserRecordSet.Close();
//弹出“添加成功”的提示信息
AfxMessageBox("机架信息增加成功!");
}
//意外捕获
catch(CDBException*e)
{
e->ReportError();
//e->Delete();
return;
}

}

解决方案 »

  1.   

    建议你mESSAGEbOX一下查询的sql语句再看看错在哪里.
    你的filter("AddIP='%s'order by AddIP ASC...)这里AddIP前是否加空格,以防止和前面的WHERE子句粘在一起发生语法错误.
      

  2.   

    估计你的"AddIP='%s'order by AddIP ASC..."前面没有空格 和where 子句粘在一起了.
    你不能MessageBox你的sql语句吗?从这里只能看到这点可能的错...
      

  3.   

    比方说,select * from a whereb= 'c' order by e,成了这样的东西,其中where 和b之间应有空格
      

  4.   

    一般这样的错都是因为sql语句不对哦
      

  5.   

    一般是SQL语句中的参数和表中的字段不对应。总之错在SQL语句的可能性最大