"输入字符串的格式不正确." 在SQL语句上调用int.Parse

Geo*_*Geo 0 c# sql rowcount

我收到错误:

"输入字符串的格式不正确."

注意:如果我将第182行更改为引号中的实际数字(即"3"或"875"),并注释掉第171行,则此代码可以正常工作.但是,第174行中的"{7}"是一个应该自动递增的字段,但不会.所以我试图在第171行得到一个"数字",它将使用行数+ 1来进行auto- =增量.

这个上有任何人吗?:-)

171   string rowCount = string.Format("SELECT COUNT(*) FROM Log WHERE Location is NULL");

173   string sql = string.Format("insert into Log values " +
174         "('{0}','{1}',{2},{3},'{4}',#{5}#,'{6}','{7}')",
175         comboBox1.Text,
176         comboBox2.Text,
177         float.Parse(textBox1.Text),
178         float.Parse(comboBox3.Text),
179         textBox3.Text,
180         textBox2.Text,
181         addRemove,
182         int.Parse(rowCount) 
183         );
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 15

立即停止使用该代码并使用参数化SQL.否则,您很容易受到SQL注入攻击,并且可能存在数据类型转换问题.

接下来,想想你实际上得到了什么rowCount.它不是表示整数的字符串 - 它是一些SQL.试图解析它int.Parse不会起作用,是吗?您需要首先执行查询 - 或者在insert语句中使用子查询.说实话,如果它意味着一个自动递增的领域,我只会集中精力去实现它的工作而不是用代码来捏造它,这些代码很容易受到竞争条件的影响.

  • @GarethD难道你不觉得他现在有足够的分数吗?你不希望他得到那些丑陋的画作,是吗? (2认同)