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);
            }
        }

 

posted @ 2016-04-07 14:17  NTMY  阅读(787)  评论(0)    收藏  举报