【发布时间】:2018-12-16 00:29:15
【问题描述】:
我正在尝试将带有十进制值的文本框插入到 sql 中。 如果文本框将包含点,那么它可以正常工作,但是如果有人使用逗号而不是点怎么办?我怎样才能抓住这两种情况?
例如我想插入值 1,9
con.Open();
SqlCommand cmd = new SqlCommand("Insert into inventory (price) values ('" + Convert.ToDecimal(textBox1.Text) + "')", con);
cmd.ExecuteNonQuery();
con.Close();
我将数据类型 varchar 转换为浮点数时出错。 我需要用户在文本框、点或逗号中输入的任何内容将其作为浮点值转换为 sql
【问题讨论】:
-
请为您的 SQL 设置参数!另外,我强烈推荐
decimal,而不是使用float。float是一种不准确的数据类型,因此存在舍入问题等问题。在文本框方面,为什么不设置验证停止除数字和小数点以外的字符。 -
首先,您的代码极易受到 SQL 注入攻击。您需要使用参数化查询
-
第二。将 Decimal.TryParse() 与正确的文化信息一起使用
-
Dmitry 是替换正确的方法吗?我的意思是,如果我将它运行到另一台具有其他全球化设置的计算机上怎么办?这种方法适用于所有国家的全球化背景吗? maccettura 我应该为此发送列的数据类型吗?
-
如果有人输入文本,替换将无济于事:
1'); DROP TABLE inventory;--。
标签: c# sql-server sql-server-2008