我使用此查询插入数据
cmd = new OleDbCommand("insert into avoir_note values ('" +
comboBoxA.Text + "','" + comboBoxCM.Text + "','" +
comboBoxCE.Text + "','" + textBoxMat.Text + "'," +
Convert.ToDouble(textBoxNote.Text)+ ",'" +
dateTimePickerDT.Text + "') ", Program.cn)
如果我在textBoxNote中输入例子10它可以工作但是
如果我在textBoxNote中输入例子10,15,我会收到此错误 查询值的数量必须与目标字段数相匹配。 如果我在textBoxNote中键入例如10.15我得到此错误 输入字符串的格式不正确
答案 0 :(得分:2)
首先,您不应该将值连接到查询中,您应该使用参数化查询。然后,您没有正确格式化值的问题。
错误消息的原因是您使用逗号作为小数分隔符格式化浮点数,但数据库期望它是句点。逗号使其成为两个单独的值而不是一个,因此值的数量与字段数不匹配。使用具有句点作为小数分隔符的区域性信息来格式化数字:
Convert.ToDouble(textBoxNote.Text).ToString(CultureInfo.InvariantCulture)
这将使代码现在正常工作,以便您可以在自己的时间内对查询进行参数化。该代码对于SQL注入攻击是敞开的,所以你绝对不应该以当前状态将它发布到生产中。
答案 1 :(得分:0)
如果我错了,请纠正我,但这是10,15用逗号!您需要使用点符号'。'。
错误消息表示它需要的参数数量与提供的参数数量不同,逗号将添加额外的参数!