日期:2014-05-18  浏览次数:20673 次

c#对Access的简单操作老出低级问题?请教!!
准备工作:在"D:\喷油嘴测试台"目录下建立PYZ.mdb数据库!里面有唯一的表mTest其字段除了id是数字外,其于都是文本.
写代码:
private   void   button1_Click(object   sender,   System.EventArgs   e)

  //数据源字符串
  string   strSource   =   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=D:\\喷油嘴测试台\\PYZ.mdb ";  
  //SQL语句
  string   strSQL   =   "insert   into   mTest(id,Mbh,Pbh,Cd,MY,Mcd,Jy,Qpp)   value   ( ' "+n+ " ', ' "+textBox3.Text+ " ', ' "+textBox4.Text   + " ', ' "+textBox5.Text+ " ', ' "+textBox6.Text+ " ', ' "+textBox7.Text+ " ', ' "+textBox9.Text+ " ', ' "+textBox8.Text+ " ') ";  
  //打开数据库
  OleDbConnection   myConn   =   new   OleDbConnection(strSource);
  try
  {
    myConn.Open();
   }
  catch(Exception   f)
        {
              MessageBox.Show(f.Message);
          }
          //执行SQL语句
  try
        {
              OleDbCommand   myCommand   =   new   OleDbCommand(strSQL,myConn);
              myCommand.ExecuteNonQuery();
          }
        catch(Exception   f)
        {
              MessageBox.Show(f.Message);
        }
        myConn.Close();
}
问题:
总是在执行myCommand.ExecuteNonQuery()的时候抛出异常!说insert语句有语法错误!我设断点,在立即窗口中复制出该SQL语句为:insert   into   mTest(id,Mbh,Pbh,Cd,MY,Mcd,Jy,Qpp)   value   ( '530671723 ', '4356 ', '3456 ', '456-345 ', '34.67 ', '324.6 ', '435.56 ', '324   4356 ')将其复制到Mysql中调试可以执行,为什么在程序里就出错?另外如果使用reader   =myCommand.ExecuteReader()查找记录,就不报错了.可是查出的reader为空没有任何行/列(我之前手动加了些数据)!如此简单的操作怎么老出错?请各位帮我看看,问题出在那里?谢谢各位了!

------解决方案--------------------
1.value -> values

2.把id值的引号去掉...

3.如果id是自增长列把id列和值都去掉...