如何将掩码文本框中的值插入数据库?

时间:2014-06-03 05:05:24

标签: c# c#-4.0

我已经使用了这段代码,但却向我显示了错误

  

输入字符串的格式不正确

代码:

 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);
}

3 个答案:

答案 0 :(得分:2)

问题不在于插入masked文本框'内容到数据库。问题实际发生在将parsing屏蔽文字int发送到int.Parse(maskedTextBox1.Text) 时。这里:

235-145_234

你可能在文本框中有一个蒙版数字为123-34-233等。在这种情况下,你首先需要清理字符串。 (即删除空格,短划线和除数字(整数)以外的所有其他字符)。如果您尝试使用intint.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()INSERTUPDATE命令使用DELETE,因为这些语句不会返回结果集:

com.ExecuteNonQuery();

答案 2 :(得分:1)

您的INSERT查询不正确,请从INSERT语句中删除where子句