c#和ms-access数据库插入

本文关键字:插入 数据库 ms-access | 更新日期: 2023-09-27 18:05:05

我想通过保存按钮保存数据:

idbox (textbox) - empbox (combobox) - jobbox (combobox) - unitbox(combobox) -

destbox (combobox) - detectivebox (combobox) - statebox (combobox) -

investdate (datepicker) - investresult (textbox)

到表investinside相同的顺序:

id - emp - unit - job - dest - detective - state - investdate -investresult

我试过这个,没有错误,但没有保存在表中,当我检查....

我能知道这是什么原因吗?

这是我试过的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace beta_2
{
    public partial class Dentry_main : Form
{
        OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=beta2.mdb;");
    OleDbDataAdapter da;
    DataSet ds = new DataSet();
    OleDbCommand com = new OleDbCommand();
    string sql;
    public Dentry_main()
    {
        InitializeComponent();
    }
    private void Dentry_main_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'beta2DataSet.stateinside' table. You can move, or remove it, as needed.
        this.stateinsideTableAdapter.Fill(this.beta2DataSet.stateinside);
        // TODO: This line of code loads data into the 'beta2DataSet.detectivestbl' table. You can move, or remove it, as needed.
        this.detectivestblTableAdapter.Fill(this.beta2DataSet.detectivestbl);
        // TODO: This line of code loads data into the 'beta2DataSet.departments' table. You can move, or remove it, as needed.
        this.departmentsTableAdapter.Fill(this.beta2DataSet.departments);
        // TODO: This line of code loads data into the 'beta2DataSet.units' table. You can move, or remove it, as needed.
        this.unitsTableAdapter.Fill(this.beta2DataSet.units);
        // TODO: This line of code loads data into the 'beta2DataSet.employees' table. You can move, or remove it, as needed.
        this.employeesTableAdapter.Fill(this.beta2DataSet.employees);
    }
    private void button1_Click(object sender, EventArgs e)
    {
        conn.Open();
        com.Connection = conn;
        sql = "INSERT INTO investinside([id],[emp],[job],[unit],[dest],[detective],[state],[investdate],[investresult])VALUES(@id,@emp,@job,@unit,@dest,@detective,@state,@investdate,@investresult)";
        com.CommandText = sql;
        com.Parameters.Clear();
        com.Parameters.AddWithValue("@id", idbox.Text);
        com.Parameters.AddWithValue("@emp", empbox.Text);
        com.Parameters.AddWithValue("@job", jobbox.Text);
        com.Parameters.AddWithValue("@unit", unitbox.Text);
        com.Parameters.AddWithValue("@dest", destbox.Text);
        com.Parameters.AddWithValue("@detective", detectivebox.Text);
        com.Parameters.AddWithValue("@state", statebox.Text);
        com.Parameters.AddWithValue("@investdate", investdatebox.Text);
        com.Parameters.AddWithValue("@investresult", investresultbox.Text);
        com.ExecuteNonQuery();
        MessageBox.Show("success");
        conn.Close();
    }
    private void button3_Click(object sender, EventArgs e)
    {
        this.Close();
    }
}

}

c#和ms-access数据库插入

有很多方法可以创建ADO。让你更轻松。

如果你的表有主键,你应该看看ADO.Net的CommandBuilder特性。

如果是这样的话,向表中添加数据可以通过简单的DataTable.Rows.Add和DataAdapter来完成。更新

如果你想手动操作,你可以尝试手动操作。而不是:


    "INSERT INTO investinside([id],[emp],[job],[unit],[dest],[detective],[state],[investdate],[investresult])VALUES(@id,@emp,@job,@unit,@dest,@detective,@state,@investdate,@investresult)"


    string.Format("INSERT INTO investinside([id],[emp],[job],[unit],[dest],[detective],[state],[investdate],[investresult])VALUES('{0}','{1}',....)", idbox.Text, empbox.Text,...)

看起来你有一个本地DB连接。这就是我通常的联系方式……"服务器= USUALLY_YOYR_PC_NAME_CAPPITAL_LETTERS;数据库= database_name;集成安全= yes "

最后一部分集成安全很重要,不要忽略它。

建议:查看MSDN的ORM -实体框架教程,我更喜欢使用对象而不是SQL语句。而且我总是犯拼写错误。SQL不会原谅这些-在实体框架中你不能搞砸…