cmd.ExecuteNonQuery();不工作 - C#(VS Code Windows 窗体)和 MS-Access 数据库

cmd.ExecuteNonQuery(); not working - C# (VS Code Windows Forms) and MS-Access database

提问人:a student 提问时间:11/11/2023 最后编辑:marc_sa student 更新时间:11/11/2023 访问量:48

问:

我正在尝试编写一个连接到 MS Access 数据库的 Windows 窗体程序,用户在其中输入他的用户名和密码,并将数据保存到数据库中。

当我运行程序时,我在代码行上出现错误。cmd.ExecuteNonQuery();

我只有 2 个文本框和 1 个按钮。

此外,我想在启动表单时将表单与数据库连接起来,我想你可以看到我尝试过了。

public partial class Form1 : Form
{
    OleDbConnection conn;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        try
        {
            conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Admin\Desktop\db\mydb.accdb");
            conn.Open();
            MessageBox.Show("Connected successfully");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Failed to connect: " + ex.Message + ex.StackTrace);
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            string query = "insert into mytable(username, password) values (@user, @pass)";

            OleDbCommand cmd = new OleDbCommand(query, conn);
            cmd.Parameters.AddWithValue("@user", textBox1.Text);
            cmd.Parameters.AddWithValue("@pass", textBox2.Text);

            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MessageBox.Show("error" + ex.Message + ex.StackTrace);
        }
        finally 
        {
            conn.Close(); 
        }
    }
}
C# SQL WinForms MS-Access OLEDB

评论

3赞 Flydog57 11/11/2023
如果您包含有关您遇到的任何错误的信息,那将会有所帮助。如果不知道您的问题是什么,就不可能为您提供帮助。这可能不是您的问题,但在 .NET 应用程序中,数据库连接需要创建、使用,然后快速释放。它们被设计为在程序开始时创建和打开,然后长时间保持打开状态。
2赞 HansUp 11/11/2023
如果像这样将密码字段名称括起来会发生什么?
0赞 jmcilhinney 11/11/2023
“Password* 是一个保留字,因此如上所述,如果不对其进行转义,您就不能将其用作标识符。
0赞 Charlieface 11/12/2023
我真诚地希望您不要使用纯文本密码......并且您的对象不应该被缓存:在需要时创建,使用 .connusing

答: 暂无答案