Windows窗体中CRUD的更新函数出错
本文关键字:更新 函数 出错 CRUD 窗体 Windows | 更新日期: 2023-09-27 17:53:08
我是编程新手,请尽可能提供帮助!最近,我的任务是使用C#&MS访问。
在我的更新功能中,我遇到了以下错误之一,我不知道为什么。。我的数据也无法更新。
错误:ArgumentException
未处理
输入字符串的格式不正确。无法存储在staff_id列中。预期类型为Int32.
这是我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AcuzioSapp.AcuzioSecureStore_DatabaseDataSetTableAdapters;
namespace AcuzioSapp
{
public partial class Update_Client : Form
{
private DataRow row;
private ClientTableAdapter adapter;
public Update_Client(DataRow row, ClientTableAdapter adapter)
{
InitializeComponent();
this.row = row;
this.adapter = adapter;
textBox_id1.Text = Convert.ToString(row["c_id"]);
textBox_name1.Text = Convert.ToString(row["c_name"]);
textBox_address1.Text = Convert.ToString(row["c_address"]);
textBox_cinfo1.Text = Convert.ToString(row["c_contactinfo"]);
textBox_pinfo1.Text = Convert.ToString(row["profile_info"]);
textBox_refno1.Text = Convert.ToString(row["c_8digitrefno"]);
textBox_staffid1.Text = Convert.ToString(row["staff_id"]);
}
private void button_close_Click(object sender, EventArgs e)
{
Close();
}
private void button_update_Click(object sender, EventArgs e)
{
row["c_name"] = "textBox_name1";
row["c_address"] = "textBox_address1";
row["c_contactinfo"] = "int.Parse(textBox_cinfo1)";
row["c_8digitrefno"] = "(textBox_pinfo1)";
row["profile_info"] = "textBox_refno1";
row["staff_id"] = "int.Parse(textBox_staffid1)";
adapter.Update(row);
}
}
}
感谢您的帮助和解释,谢谢。
这是因为您的列在Access数据库中被声明为整数,并且您试图在其中插入一个String值。我还认为,您将无法在指定的表中获得正确的值,因为您通过常量字符串(row["profile_info"] = "textBox_refno1";)
更新列,这将在profile_info
列中插入textBox_refno1,而不是textBox值。试试这个:
row["staff_id"] = Convert.ToInt32(textBox_staffid1.Text);
更新:复制并粘贴以下代码,您将永远不会有任何问题:
private void button_update_Click(object sender, EventArgs e)
{
row["c_name"] = textBox_name1.Text;
row["c_address"] = textBox_address1.Text;
row["c_contactinfo"] = int.Parse(textBox_cinfo1.Text);
row["c_8digitrefno"] = textBox_pinfo1.Text;
row["profile_info"] = textBox_refno1.Text;
row["staff_id"] = int.Parse(textBox_staffid1.Text);
adapter.Update(row);
MessageBox.Show("Data has been updated");
}
希望得到帮助。
row["c_name"] = textBox_name1.Text;
row["c_address"] = textBox_address1.Text;
...
int val;
if(int.TryParse(textBox_staffid1.Text, out val))
{
row["staff_id"] = val;
}
我认为,你的文本框中的文本格式不正确。