C# Access更新和插入数据时参数的顺序问题
第一次用数据库,用的是Access,这个数据库有个地方对初用的人来说要注意一下,就是使用OleDbParameter添加参数的时候,添加参数的顺序一定要按sql语句中参数出现的顺序添加,否则数据写入不进数据库,但是也不会报错。
#region 更新数据库中数据 public static void UpdateDeviceElement(DeviceElement deviceElement, string devicePicPath, string certificatePath) { string sqlInsert = string.Format("update {0} set DeviceName =@DeviceName,DeviceImage =@DeviceImage,CertificateName =@CertificateName,Certificate=@Certificate where Code =@Code", CommonDAL.GetTableName(DicTable.DeviceBaseInfo)); OleDbParameter[] paras = new OleDbParameter[5]; paras[0] = new OleDbParameter("@DeviceName", OleDbType.VarChar); paras[1] = new OleDbParameter("@DeviceImage", OleDbType.Binary); paras[2] = new OleDbParameter("@CertificateName", OleDbType.VarChar); paras[3] = new OleDbParameter("@Certificate", OleDbType.Binary); paras[4] = new OleDbParameter("@Code", OleDbType.VarChar); paras[0].Value = deviceElement.DeviceName; paras[1].Value = ConvertToBytes(devicePicPath); paras[2].Value = deviceElement.CertificateName; paras[3].Value = ConvertToBytes(certificatePath); paras[4].Value = deviceElement.Code; try { SQLHelper.ExecuteNonQuery(CommonDAL.GetConnectionString(ConnectStringType.TaLiMu), System.Data.CommandType.Text, sqlInsert, paras); } catch { //return null; } } #endregion
如上面的代码中,在更新时,Code是最后一个参数,所以Code这个参数一定要最后一个添加进去。
private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, CommandType cmdType, string cmdText, OleDbParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) { foreach (OleDbParameter parm in cmdParms) cmd.Parameters.Add(parm); } }

浙公网安备 33010602011771号