public static int insert(crm p)
   {
       string sql="insert into crm(order,name,tel,qq,address,date,amount,re)values(?,?,?,?,?,?,?,?);";
            OleDbParameter[] parameters = new OleDbParameter[8];
            parameters[0] = new OleDbParameter("order", OleDbType.VarChar, 50);
            parameters[0].Value = p.Order;
            parameters[1] = new OleDbParameter("name", OleDbType.VarChar, 50);
            parameters[1].Value = p.Name;
            parameters[2] = new OleDbParameter("tel", OleDbType.VarChar, 50);
            parameters[2].Value = p.Tel;
            parameters[3] = new OleDbParameter("qq", OleDbType.VarChar, 50);
            parameters[3].Value = p.Qq;
            parameters[4] = new OleDbParameter("address", OleDbType.VarChar,50);
            parameters[4].Value = p.Address;
            parameters[5] = new OleDbParameter("date", OleDbType.Date);
            parameters[5].Value = p.Date;
            parameters[6] = new OleDbParameter("amount", OleDbType.Integer);
            parameters[6].Value = p.Amount;
            parameters[7] = new OleDbParameter("re", OleDbType.VarChar,100);
            parameters[7].Value = p.Re;

           using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                OleDbCommand cmd = new OleDbCommand(sql, connection);
                try
                {
                    connection.Open();
                    if(parameters!=null) cmd.Parameters.AddRange(parameters);
                    cmd.ExecuteNonQuery();//执行这个以后就提示"insert into 语法错误!"
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
      }
我用的access数据库,做个增加功能,传过来的实例p  是有内容的,但是运行这个方法的时候它总提示“insert into 语法错误”到底哪里错了?
还有以后的修改,删除的功能,access这方面的sql语句有什么特别要注意的吗?

解决方案 »

  1.   

    acess不是标准的SQL语句 有自己的实现方法 你查查相关资料吧
    以前我就是用标准SQL操作acess始终找不到原因,后来发现原来是语法有细微不同,改后就正常了~
      

  2.   

    string sql="insert into crm(order,name,tel,qq,address,date,amount,re)values(?,?,?,?,?,?,?,?);";
    ?是什么?
      

  3.   

    占位符吧,下面的parameters 会将数据填充进去
      

  4.   

    别的看不出有什么,可能是使用了Access的关键字,将所有字段加[]表示看看。
    string sql="insert into crm([order],[name],[tel],[qq],[address],[date],[amount],[re])values(?,?,?,?,?,?,?,?)";
      

  5.   

    string sql="insert into crm([order],[name],tel,qq,address,[date],amount,re)values(?,?,?,?,?,?,?,?)";这样试试
      

  6.   

    有什么其他写法吗?除了拼接字符串只要防sql注入就行