我已经使用了这段代码,但却向我显示了错误
输入字符串的格式不正确
代码:
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["String"].ConnectionString);
try
{
con.Open();
SqlCommand com = new SqlCommand("insert into TableYear where textBoxYear=" + int.Parse(maskedTextBox1.Text) + ";", con);
SqlDataReader reader = com.ExecuteReader();
int count = 0;
while (reader.Read())
{
count++;
string AY = reader.GetString(0);
comboBoxAY.Items.Add(AY);
}
con.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
答案 0 :(得分:2)
问题不在于插入masked
文本框'内容到数据库。问题实际发生在将parsing
屏蔽文字int
发送到int.Parse(maskedTextBox1.Text)
时。这里:
235-145_234
你可能在文本框中有一个蒙版数字为123-34-233等。在这种情况下,你首先需要清理字符串。 (即删除空格,短划线和除数字(整数)以外的所有其他字符)。如果您尝试使用int
将int.Parse(maskedTextBox1.Text)
文字转换为input string was not in correct format
,则显然会提出-
的例外情况。因为string textBoxText = maskedTextBox1.Text;
textBoxText = textBoxText.Replace("-", "");
int number = int.parse(textBoxText);
无法解析为整数。
首先尝试从字符串中删除短划线,然后将其解析为int。为:
{{1}}
然后将其插入数据库。
答案 1 :(得分:2)
T-SQL中的INSERT
不支持WHERE
子句 - 你应该使用类似的东西:
INSERT INTO dbo.TableYear(Col1) VALUES(Val1)
在C#中,您应该始终使用参数化查询来避免SQL注入攻击:
SqlCommand com = new SqlCommand("INSERT INTO dbo.TableYear(ColumnName) VALUES(@Value)");
com.Parameters.Add("@Value", SqlDbType.Int).Value = int.Parse(maskedTextBox1.Text);
此外,您需要对.ExecuteNonQuery()
,INSERT
或UPDATE
命令使用DELETE
,因为这些语句不会返回结果集:
com.ExecuteNonQuery();
答案 2 :(得分:1)
您的INSERT查询不正确,请从INSERT语句中删除where子句