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

今天在写一个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'中的标识列指定显式值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值