C# 将数据从窗体插入访问数据库

本文关键字:插入 访问 数据库 窗体 数据 | 更新日期: 2023-09-27 18:34:40

我开始学习C#,并且在使用单击按钮时将文本框中的信息插入Access数据库中。

我遇到的问题是在添加过程中。该代码执行Try... Catch部分,然后返回错误"Microsoft Access 数据库引擎",并且不提供任何线索。

这是代码:

namespace WindowsFormsApplication1
{
    public partial class FormNewUser : Form
    {
        public FormNewUser()
        {
            InitializeComponent();
        }
        private void BTNSave_Click(object sender, EventArgs e)
        {
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:'Users'kenny'Documents'Visual Studio 2010'Projects'Copy Cegees'Cegees'Cegees'Login.accdb";
            String Username = TEXTNewUser.Text;
            String Password = TEXTNewPass.Text;
            OleDbCommand cmd = new OleDbCommand("INSERT into Login (Username, Password) Values(@Username, @Password)");
            cmd.Connection = conn;
            conn.Open();
            if (conn.State == ConnectionState.Open)
            {
                cmd.Parameters.Add("@Username", OleDbType.VarChar).Value = Username;
                cmd.Parameters.Add("@Password", OleDbType.VarChar).Value = Password;
                try
                {
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Data Added");
                    conn.Close();
                }
                catch (OleDbException ex)
                {
                    MessageBox.Show(ex.Source);
                    conn.Close();
                }
            }
            else
            {
                MessageBox.Show("Connection Failed");
            }
        }
    }
}

C# 将数据从窗体插入访问数据库

Password是一个保留字。 将该字段名称括起来以避免混淆数据库引擎。

INSERT into Login (Username, [Password])

这个答案将有所帮助,以防万一,如果您正在使用数据库,那么主要依靠try-catch块语句的帮助,这将有助于并指导您的代码。在这里,我将向您展示如何使用按钮单击事件在数据库中插入一些值。

 private void button2_Click(object sender, EventArgs e)
    {
        System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
        conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
    @"Data source= C:'Users'pir fahim shah'Documents'TravelAgency.accdb";
     try
       {
           conn.Open();
           String ticketno=textBox1.Text.ToString();                 
           String Purchaseprice=textBox2.Text.ToString();
           String sellprice=textBox3.Text.ToString();
           String my_querry = "INSERT INTO Table1(TicketNo,Sellprice,Purchaseprice)VALUES('"+ticketno+"','"+sellprice+"','"+Purchaseprice+"')";
            OleDbCommand cmd = new OleDbCommand(my_querry, conn);
            cmd.ExecuteNonQuery();
            MessageBox.Show("Data saved successfuly...!");
          }
         catch (Exception ex)
         {
             MessageBox.Show("Failed due to"+ex.Message);
         }
         finally
         {
             conn.Close();
         }

并且没有提供任何线索

是的,确实如此,不幸的是,您的代码忽略了所有这些线索。 看看你的异常处理程序:

catch (OleDbException  ex)
{
    MessageBox.Show(ex.Source);
    conn.Close();
}

您正在检查的只是异常的来源。 在本例中,它是"Microsoft访问数据库引擎"。 您没有检查错误消息本身、堆栈跟踪、任何内部异常或有关异常的任何有用信息

不要忽略异常,它包含有关出错的原因和原因的信息。

有各种日志记录工具(NLog,log4net等(可以帮助您记录有关异常的有用信息。 如果做不到这一点,您至少应该捕获异常消息、堆栈跟踪和任何内部异常。 目前您忽略了该错误,这就是您无法解决错误的原因。

在调试器中,在catch块内放置一个断点,并检查异常的详细信息。 你会发现它包含了很多信息。

 private void Add_Click(object sender, EventArgs e) {
 OleDbConnection con = new OleDbConnection(@ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:'Users'HP'Desktop'DS Project.mdb");
 OleDbCommand cmd = con.CreateCommand();
 con.Open();
 cmd.CommandText = "Insert into DSPro (Playlist) values('" + textBox1.Text + "')";
 cmd.ExecuteNonQuery();
 MessageBox.Show("Record Submitted", "Congrats");
 con.Close();
} 

我的插入数据的代码不起作用。它没有显示错误,但数据没有显示在我的数据库中。

公共分部类 表格 1 : 表格{OleDbConnection connection = new OleDbConnection(check.属性.设置.默认.厨房连接字符串(;公共表单1(({初始化组件((;}

    private void Form1_Load(object sender, EventArgs e)
    {
        
    }
    private void btn_add_Click(object sender, EventArgs e)
    {
        OleDbDataAdapter items = new OleDbDataAdapter();
        connection.Open();
        OleDbCommand command = new OleDbCommand("insert into Sets(SetId, SetName,  SetPassword) values('"+txt_id.Text+ "','" + txt_setname.Text + "','" + txt_password.Text + "');", connection);
        command.CommandType = CommandType.Text;
        command.ExecuteReader();
        connection.Close();
        MessageBox.Show("Insertd!");
    }
}