【问题标题】:input string was not in a correct format error in C#输入字符串在 C# 中的格式不正确
【发布时间】: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吗?

标签: c# mysql


【解决方案1】:

正如 cmets 中所讨论的,问题是您尝试在打开表单期间转换实际上没有值(它是 null 或空字符串)的 TextBox 的值

可能的解决方案:

  • 表单启动时不要调用方法
  • 使用有效的默认值填充文本框

回答问题的第二部分: 是的,您已经在使用参数化查询。

【讨论】:

  • 是的,我犯的错误是我在“加载表单”函数而不是按钮中调用了该函数。非常感谢。
猜你喜欢
  • 2021-11-24
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多