我在尝试将 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 访问数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章
当代码从后面执行时,从 javascript 更新的文本框值不存在