【发布时间】:2017-03-04 16:05:33
【问题描述】:
我正在尝试将以下详细信息添加到数据库表中。这个问题。答案和 topicID[int]
C#代码:
private void AddingQuestions()
{
using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;database=project;username=root;password=***;"))
{
MySqlCommand cmd = new MySqlCommand("INSERT INTO questions (question, answer, topicID) VALUES (@Questions, @Answers, @TopicID);");
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@Questions", TxtBoxQuestion.Text);
cmd.Parameters.AddWithValue("@Answers", TxtboxAnswer.Text);
cmd.Parameters.AddWithValue("@TopicID", Convert.ToInt32(TxtBoxTopicID.Text));
connection.Open();
cmd.Connection = connection;
cmd.ExecuteNonQuery();
MessageBox.Show("Saved");
connection.Close();
}
}
在 mscorlib.dll 中发生了“System.FormatException”类型的未处理异常
附加信息:输入字符串的格式不正确。
在线:
cmd.Parameters.AddWithValue("@TopicID", Convert.ToInt32(TxtBoxTopicID.Text));
此外:我知道使用参数化 sql 来避免 sql 注入是一种很好的做法。我使用的是参数化 sql 吗?
【问题讨论】:
-
确保
TxtBoxTopicID中的文本是一个有效的整数 -
在显示表单之前我得到了这个异常。即当我单击将我定向到此页面的按钮时。我什至在文本框中添加任何整数值都不会引发异常。
-
如果您还没有输入任何内容,则TextBox的值为null或空字符串,无法转换为int。您不应该在打开表单时调用该方法,或者使用有效的默认值填充文本框
-
当然!我太傻了!非常感谢我的朋友
-
对了,我用的是参数化的sql吗?