我在尝试将 winforms 文本框值保存到连接的 MS 访问数据库时出错

Posted

技术标签:

【中文标题】我在尝试将 winforms 文本框值保存到连接的 MS 访问数据库时出错【英文标题】:I have error while I'm trying to save winforms textboxes values into a connected MS access database 【发布时间】:2021-10-11 19:42:14 【问题描述】:

我已经创建了 winform 项目并将 MS Access 数据库绑定到它,我已经创建了 dataGridView,它的数据源来自 MS Acess 数据库。

enter image description here

我还创建了 3 个文本框来承载数据输入,并创建了 “添加按钮” 将文本框值保存到 MS Access 数据库中并在 dataGridView 中显示这些数据。

这是“添加按钮”代码:

private void button1_Click(object sender, EventArgs e)
    
        string firstName = textBox1.Text;
        string secondName = textBox2.Text;
        int age =Convert.ToInt32(textBox3.Text);
        int ID = 0;
        ID += 1;

        theDatabase1DataSet.Table1.Rows.Add(ID, firstName, 
          secondName, age);
        textBox1.Text = "";
        textBox2.Text = "";
        textBox3.Text = "";
        MessageBox.Show("Inputs have been saved");
    

当我在文本框中输入文本并点击“添加按钮

出现此错误信息“System.ArgumentException: 'Input string was not in a correct format.Couldn't store in age Column. Expected type is Int32.'

enter image description here

【问题讨论】:

textBox3.Text的值是多少? age 不能是字符串。使它成为一个整数。使用int.TryParse进行转换。 @viveknuna 我把textbox3的值从string转成int,还是出现错误。 @MohamedRezk 有什么价值?它是有效的 int 吗? @viveknuna textbox3 的值是数字,代表用户的年龄。我认为数据库的 ID 列中的问题不能重复,因为它是唯一的,但是当我单击“添加按钮”时,我不能跳过向 ID 单元格添加值。 【参考方案1】:

首先有一个原因,这就是为什么 SO 版主说您不应该放置链接,而不是放置文本,以便其他人可以轻松阅读。

在您的情况下,主要问题在附加的链接中,而您在问题中提到的内容完全不同。

我有几个建议给你。您应该将ID 作为表的主键并使其成为自动增量标识。那么就不需要显式传递ID 列了。

关于您的错误,您总是在 ID 列中插入值 1,并且它给出了错误,因为它是唯一的。

【讨论】:

我可能没有正确描述我想要的东西。但是我想当我单击“添加按钮”时,正在数据库中创建一个新行,并且我想将文本框的值添加到新创建的行“名字,名字和年龄”的这些列中,并且不要在“ID 列”中添加任何内容。如果你明白我想要什么,你能给我推荐正确的代码吗?

以上是关于我在尝试将 winforms 文本框值保存到连接的 MS 访问数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 HTML 文本框值?

当代码从后面执行时,从 javascript 更新的文本框值不存在

如何通过单击一个按钮保存 asp.net 文本框值并将该数据用于另一个按钮单击?

在启动 C# .NET 时将文本加载到文本框中

将文本框值从一个文件传递到另一个文件

以编程方式设置文本框值但返回运行时错误 2115