【错误】”将参数值从 String 转换到 Decimal 失败“ && “仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时”

来源:互联网 发布:人人商城分销6.0源码 编辑:程序博客网 时间:2024/05/22 10:28

今天在写一个SqlDataAdapter向数据库更新数据的Demo时,出现了这个错误,其实很好理解,还是一个细心的问题:

在往数据库里存储数据时,要注意字段的类型!!

而我的错误就是 一个字段是int 型,存储给的数据却是string类型,所以会报这样的错。。。(细心哟)

将参数值从 String 转换到 Decimal 失败。
   //向插入命令添加参数            insertCmd.Parameters.Add("@id", SqlDbType.Int,4,"id");            insertCmd.Parameters.Add("@name", SqlDbType.NVarChar, 50, "name");            insertCmd.Parameters.Add("@subject", SqlDbType.NVarChar, 100, "subject");            insertCmd.Parameters.Add("@phone", SqlDbType.Money, 12, "phone");            insertCmd.Parameters.Add("@qq", SqlDbType.NVarChar, 50, "qq");            insertCmd.Parameters.Add("@mail", SqlDbType.NVarChar, 50, "mail");            //设置数据适配器的SelectCommand属性/InsertCommand            da.SelectCommand = selectCmd;            da.InsertCommand = insertCmd;            //创建数据集对象            DataSet data = new DataSet();            //使用数据适配器填充数据适配器            da.Fill(data, "message");            //向DataSet的“Books”表中添加一条记录            DataRow drNew = data.Tables["message"].NewRow();            //设置新添加行的值            drNew[0] = id;             //这里字符串要转为int整型!!!!★★★★★            drNew[1] = phone;            drNew[2] = subject;            drNew[3] = phone;            drNew[4] = qq;            drNew[5] = mail;

改成这个即可:
drNew[0] = int.Parse(id);

但是,看我上面的代码,第二个地方需要注意,这个id不能是主键,理由不必多说,主键我在数据库设置了会自增的,不可人工添加!否则会报以下错误

仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'message'中的标识列指定显式值。
0 0