在 C# 中使用 microsoft access 和 OleDb 在数据库中添加数据

Posted

技术标签:

【中文标题】在 C# 中使用 microsoft access 和 OleDb 在数据库中添加数据【英文标题】:Adding data in the database using microsoft access and OleDb in C# 【发布时间】:2013-03-23 11:52:10 【问题描述】:

我是 OleDb 库的新手,我想使用该库将文本表单文本框添加到数据库中。 我的代码:

public partial class Form1 : Form

    public Form1()
    
        InitializeComponent();
    
    private OleDbConnection conn = new OleDbConnection();
    private void button1_Click(object sender, EventArgs e)
    
        conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Project\Learning\Visual C#\Form\WindowsFormsApplication1\WindowsFormsApplication1\Test.mdb";
        string NAME = textBox1.Text;
        conn.Open();
        OleDbCommand cmmd = new OleDbCommand("INSERT into student(NAME)" + "VALUES(@NAME)", conn);  
        if (conn.State == ConnectionState.Open)
        
            cmmd.Parameters.Add("@NAME", OleDbType.Char, 20);
            cmmd.Parameters["@NAME"].Value = NAME;
            try
            
                cmmd.ExecuteNonQuery();
                MessageBox.Show("DATA ADDED");
                conn.Close();
            
            catch (OleDbException expe)
            
                MessageBox.Show(expe.Source);
            
        
        else
        
            MessageBox.Show("CON FAILED");
        
    

但它不起作用。 我在 C# 中找不到 OleDbCommand 的良好参考。 如何在我的代码中使用 OleDbCommand

【问题讨论】:

什么不起作用?您在哪一行得到异常,异常是什么? 在我的 try catch 中,代码放入 catch 部分并在 Message Box 中显示“Microsoft Access 数据库引擎”。出了什么问题? 是的,但结果相同! 不,您是否更改了此代码的任何部分? 我更新了我的答案,我无法测试,但我认为这对你有用。 【参考方案1】:

解决了

public Form1()
    
        InitializeComponent();
    

    private void button1_Click(object sender, EventArgs e)
    
        OleDbConnection conn = new OleDbConnection();
        conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Project\Learning\Visual C#\Form\WindowsFormsApplication2\WindowsFormsApplication2\Test.mdb";
        conn.Open();
        string Name = textBox1.Text;
        OleDbCommand cmmd = new OleDbCommand("INSERT INTO table1 (student) Values(@Name)", conn);
        if (conn.State == ConnectionState.Open)
        
            cmmd.Parameters.Add("@Name", OleDbType.VarWChar, 20).Value = Name;
            try
            
                cmmd.ExecuteNonQuery();
                MessageBox.Show("DATA ADDED");
                conn.Close();
            
            catch (OleDbException expe)
            
                MessageBox.Show(expe.Message);
                conn.Close();
            
        
        else
        
            MessageBox.Show("CON FAILED");
        
    

【讨论】:

很高兴看到您解决了这个问题,如果您稍等片刻,您可以将其标记为答案。快乐编码:)【参考方案2】:

也许这段代码可以帮助你

      OleDbConnection dbConnection = new OleDbConnection(CONNECTION_STRING);

        string commandString = 
        "INSERT INTO MeetingEntries (Subject, Location, Start Date, End Date, Enable   Alarm, Repeat Alarm, Reminder, Repetition Type)" + " VALUES (?, ?, ?, ?, ?, ?, ?, ?)";

        OleDbCommand commandStatement = new OleDbCommand(commandString, dbConnection);

        commandStatement.Parameters.Add("@Subject", OleDbType.VarWChar, 30).Value = currentEntry.Subject;
        commandStatement.Parameters.Add("@Location", OleDbType.VarWChar, 50).Value = currentEntry.Location;
        commandStatement.Parameters.Add("@Start Date", OleDbType.Date, 40).Value = currentEntry.StartDateTime.Date;
        commandStatement.Parameters.Add("@End Date", OleDbType.Date, 40).Value = currentEntry.EndDateTime.Date;
        commandStatement.Parameters.Add("@Enable Alarm", OleDbType.Boolean, 1).Value = currentEntry.IsAlarmEnabled;
        commandStatement.Parameters.Add("@Repeat Alarm", OleDbType.Boolean, 1).Value = currentEntry.IsAlarmRepeated;
        commandStatement.Parameters.Add("@Reminder", OleDbType.Integer, 2).Value = currentEntry.Reminder;
        commandStatement.Parameters.Add("@Repetition Type", OleDbType.VarWChar, 10).Value = currentEntry.Repetition;

        dbConnection.Open();
        commandStatement.ExecuteNonQuery();

【讨论】:

以上是关于在 C# 中使用 microsoft access 和 OleDb 在数据库中添加数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中创建 Microsoft Access 数据库? [复制]

参考 Microsoft.Office.interop.access.dao.dll 导致错误 C#

在使用 C# 时对设置与 Microsoft Access 数据库的连接感到困惑

使用 Microsoft.Jet.OLEDB.4.0 从 C# 将行插入 Access db,自动编号列设置为零

使用 LINQ 和 C# 查询 Microsoft Access MDB 数据库

无法通过 C# 中的 OleDB 从 Microsoft Access 中删除表的所有行