如何使用c#在Access中创建、更新、删除数据

本文关键字:更新 删除 数据 创建 何使用 Access | 更新日期: 2023-09-27 17:49:42

我正在使用Microsoft Visual c# 2008 Express Edition创建这个项目。我想使用单选按钮插入数据如何编写代码,例如,我想插入性别(男/女)。请帮我写代码

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        OleDbConnection con;
        DataSet ds1;
        OleDbDataAdapter da;
        int MaxRows = 0;
        int inc = 0;
        private void Form1_Load(object sender, EventArgs e)
        {
            con = new.OleDbConnection();
            ds1 = new DataSet();
            con.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/MyWorkers1.mdb";
            string sql = "SELECT * from tblWorkers";
            da = new OleDbDataAdapter(sql, con);
            con.Open();
            da.Fill(ds1, "MyWorkers1");
            NavigateRecords();
            MaxRows = ds1.Tables["MyWorkers1"].Rows.Count;
            //MaxRows = ds1.Tables["MyWorkers1"].Rows[inc];
            //MessageBox.Show("Database open");
            con.Close();
            //MessageBox.Show("Database close");
            con.Dispose();
        }
        private void NavigateRecords()
        {
            DataRow drow = ds1.Tables["MyWorkers1"].Rows[inc];
            textBox1.Text = drow.ItemArray.GetValue(0).ToString();
            textBox2.Text = drow.ItemArray.GetValue(1).ToString();
            textBox3.Text = drow.ItemArray.GetValue(2).ToString();
        }
        private void btnNext_Click(object sender, EventArgs e)
        {
            if (inc != MaxRows - 1)
            {
                inc++;
                NavigateRecords();
            }
            else
            {
                MessageBox.Show("No More Records");
            }
        }
        private void btnPrevious_Click(object sender, EventArgs e)
        {
            if (inc > 0)
            {
                inc--;
                NavigateRecords();
            }
            else
            {
                MessageBox.Show("First Record");
            }
        }
        private void btnFirst_Click(object sender, EventArgs e)
        {
            if (inc != 0)
            {
                inc = 0;
                NavigateRecords();
            }
        }
        private void btnLast_Click(object sender, EventArgs e)
        {
            if (inc != MaxRows - 1)
            {
                inc = MaxRows - 1;
                NavigateRecords();
            }
        }
        private void btnAddNew_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            System.Data.OleDb.OleDbCommandBuilder cb;
            cb = new System.Data.OleDb.OleDbCommandBuilder(da);
            DataRow drow = ds1.Tables["MyWorkers1"].NewRow();
            drow[0] = textBox1.Text;
            drow[1] = textBox2.Text;
            drow[2] = textBox3.Text;
            ds1.Tables["MyWorkers1"].Rows.Add(drow);
            MaxRows = MaxRows + 1;
            inc = MaxRows - 1;
            da.Update(ds1, "MyWorkers1");
            MessageBox.Show("Record / Entry Added");
        }       
    }
}

当运行此命令时,在da中显示错误。更新(ds1, "MyWorkers1"); ' like

未处理的连接属性未初始化

请帮帮我。

如何使用c#在Access中创建、更新、删除数据

您需要在Save方法中再次打开连接,就像在FormLoad方法中一样。

更新前忘记打开连接

最佳实践是在事务之前和之后打开和关闭连接。

首先,不要通过从函数中删除con.Dispose();来处理Form1_Load()中的连接。

然后在btnSave_Click事件处理程序的更新调用周围添加以下代码:

con.Open();
da.Update(ds1, "MyWorkers1");
con.Close();