我要通过ado.net往数据库插入一条记录,sql如下:
  insert into tsys_user(userid,username,loginname,createtime,schoolid, password,email,phone,mobile,statusid,sex,birthday,address,description,image,isadmin,classid,roleid,clientres)values(100, '测试先生','test','2008-02-27 13:53:22',202,'password','[email protected]','075526551139','13510070123',1,1,'2008-05-01','深圳','为什么入不了ACCESS','',0,1,23,'')   
  但是执行的时候,总提示如下错误:
  INSERT INTO 语句的语法错误。
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   在 FingerLib.DBHelper_OleDb.ExecuteSql(String SQLString) 位置 E:\netproject\指纹\FingerLib\DBHelper_OleDb.cs:行号 68
   这个类如下:    namespace FingerLib
{
    public class DBHelper_OleDb
    {
        private static string connectionString;
        static DBHelper_OleDb()
        {
            string EPath = Application.ExecutablePath;
            string CurrntPath = EPath.Substring(0, EPath.LastIndexOf(@"\") + 1);
            connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\\jyt.mdb";
        }
        public static int ExecuteSql(string SQLString)
        {
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                    }
                    catch (Exception e)
                    {
                        connection.Close();
                        //MessageBox.Show(e.Message + "\r\n" + e.StackTrace);
                        Logger.LogInfo(e.Message + "\r\n" + e.StackTrace);
                        throw new Exception(e.Message);
                    }
                }
            }
        }
    }
}
      可是这个sql,我在access的sql视图里面执行,就可以插入进去,不报任何错误,请各位大大帮我看看,非常感谢!!

解决方案 »

  1.   

     insert into tsys_user(userid,username,loginname,createtime,schoolid, password,email,phone,mobile,statusid,sex,birthday,address,description,image,isadmin,classid,roleid,clientres)values(100, '测试先生','test',#2008-02-27 13:53:22#,202,'password','[email protected]','075526551139','13510070123',1,1,#2008-05-01#,'深圳','为什么入不了ACCESS','',0,1,23,'')  
    日期型的字段是用##来表示,不用''
      

  2.   

    既然提示了Insert语句错误,就看看插入的值类型和相应字段类型是否吻合。
      

  3.   

    Access啊,应该是日期#号表示的问题,久了不用都忘了
      

  4.   

    你看看是数据库的权限放开了吗?
    access要将他的写入权限放开就可以了
      

  5.   

    to greystar:
       我试着将'2008-3-2 23:23:12'换成了#2008-3-2 23:23:12#,但还是一样的报错    奇怪的就是这个sql,直接在access的设计视图里面可以直接入库。并通过ado.net也可以插入到sqlserver,但就是插入access报错
      

  6.   

    to netwar
       应该是放开了,因为我在这个文件里,还有其他的表,字段比这个少,大概1半的样子,就可以将数据插入进去
        请问是不是access做了什么其他的限制呢?
      

  7.   

    你先在access里试着insert一条记录.正确了再放到ado.net里执行.
    你不是有二个时间字段的吗.都要改成#
      

  8.   

       不好意思,找到问题了
       是sql中的insert into(....里有password和image,应该写成insert into([password],[image]),可能是access关键字的原因
       那个日期的的话,也可以用'',不一定要##   谢谢大家的捧场!
      

  9.   

    路过,顶一下,以表支持
    1.你的这个sql放到数据库中先执行一下,看是否正确,
    2.如果不是sql语句的错误,你可将你的代码在你认为有疑义的地方设置断点,或者是逐语句调试一下,看是到哪的错误