// 看一下sql的值就知道错在哪里了。
// 另外,如果sql是CString,那么建议用CString::Format格式化字符串。
CString sql;
sql.Format("INSERT INTO txl VALUES('%s', '%s', '%s', '%s', '%s')",
  m_name, m_phone1, m_phone2, m_qq, m_addr);

解决方案 »

  1.   

    如果sql是char
    char sql[512];
    sprintf(sql,"INSERT INTO txl VALUES('%s', '%s', '%s', '%s', '%s')",
      m_name, m_phone1, m_phone2, m_qq, m_addr);
      

  2.   

    这有一个操作Access的例子
    http://download.csdn.net/source/2383423
      

  3.   

    跟踪一下,应该你的sql有问题。
      

  4.   

    将sql="insert into txl values '"+m_name+"',"+m_phone1+","+m_phone2+","+m_qq+",'"+m_addr+"')"
    改为:
    sql="insert into txl values ('"+m_name+"','"+m_phone1+"','"+m_phone2+"','"+m_qq+"','"+m_addr+"')"话说你漏掉的单引号也太多了。你自己不会设断点查一下sql的值有没有问题吗?
      

  5.   

    查资料见 上面代码中的+都为& ,我修改了一下但是产生编译错误。
    --------------------------------------------
    你把+号换成了&?
    在这里不能用&来连接字符串。
      

  6.   


    正确  5楼说的也不错,把你返回的SQL,拷出来运行一下,就知道原因了
      

  7.   

    sql语句我一直用_bstr_t 而且也没有错误
      

  8.   

    而且执行sql语句时用的也是_bstr_t,     如    m_pConnection->Execute(bstrSQL,NULL,adCmdText);
      

  9.   


    我感觉也是sql语句的问题。我就是楼主,有俩号,晕只能回复三次,所以……
      

  10.   

    检查一下你的ACCESS数据库文件有没有写入的权限
      

  11.   

    我没漏掉,查资料 如果ACESS的字段名为数字的话 人家说去掉单引号,再有两种情况我都试了,都不行。
     
    sql的值?  你是说sql里面变量的值吧,我测试过了,没问题。
      

  12.   


    返回的sql?小弟不知,能说清楚点吗?再有六楼  我两种方法都试过了。
      

  13.   

    就是调试时看sql变量的值  用watch窗口把里面的值考出来,放到access的sql界面,看看能运行成功否
      

  14.   

    在SQL语句中,字符串都应该用单引号引起来,看看我这个例子:CString sql;
    sql.Format(_T("delete from DeviceModel where Guid='%s'"),deviceModelGuid.c_str());
      

  15.   

    CString strSql=_T("");
    strSql.Format(_T("delete you where id ='%s'"),strName);