【问题标题】:UPDATE query on Access Database not working C#.NETAccess 数据库上的 UPDATE 查询不起作用 C#.NET
【发布时间】:2013-04-22 05:45:58
【问题描述】:

我正在开发一个数据库管理系统。我有一个更新用户配置文件的简单任务。我创建了一个带有文本框和保存按钮的 asp.net 页面。添加文本后,我单击保存按钮。按钮的代码是

protected void Button1_Click(object sender, EventArgs e)
    {
        string firstName = TextBox2.Text;
        string lastName = TextBox1.Text;
        string sCourse = TextBox3.Text;
        string sTelephone = TextBox4.Text;
        string sAddress = TextBox5.Text;
        string sEmail = TextBox6.Text;
        string Gender = TextBox7.Text;
        string user = User.Identity.Name;

        OleDbConnection oleDBConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\ASPNetDB.accdb");
        string sqlQuerry = "UPDATE aspnet_Users SET firstName=@firstName, lastName=@lastName, Gender=@Gender, Address=@Address, Telephone=@Telephone, Course=@Course, Email=@email WHERE UserName=@UserName";

        OleDbCommand cmd = new OleDbCommand(sqlQuerry, oleDBConn);

        cmd.Parameters.AddWithValue("@UserName", User.Identity.Name);
        cmd.Parameters.AddWithValue("@firstName", firstName);
        cmd.Parameters.AddWithValue("@lastName", lastName);
        cmd.Parameters.AddWithValue("@Course", sCourse);
        cmd.Parameters.AddWithValue("@Telephone", sTelephone);
        cmd.Parameters.AddWithValue("@Address", sAddress);
        cmd.Parameters.AddWithValue("@Gender", Gender);
        cmd.Parameters.AddWithValue("@Email", sEmail);

        oleDBConn.Open();
        cmd.ExecuteNonQuery();
    }

但是什么也没发生。数据库未更新。代码正确吗?

【问题讨论】:

    标签: c# asp.net .net database ms-access


    【解决方案1】:

    以与UPDATE 语句中出现的参数名称相同的顺序添加参数值。

    cmd.Parameters.AddWithValue("@firstName", firstName);
    cmd.Parameters.AddWithValue("@lastName", lastName);
    cmd.Parameters.AddWithValue("@Gender", Gender);
    cmd.Parameters.AddWithValue("@Address", sAddress);
    cmd.Parameters.AddWithValue("@Telephone", sTelephone);
    cmd.Parameters.AddWithValue("@Course", sCourse);
    cmd.Parameters.AddWithValue("@Email", sEmail);
    cmd.Parameters.AddWithValue("@UserName", User.Identity.Name);
    

    带Access的OleDb不注意参数names,只注意它们的顺序。

    【讨论】:

    • 哇.. 我不知道带有 OleDb 的 Access 不关心参数名称。不接受名字,只接受他们的命令有什么具体原因吗?是因为 OleDb 还是 Access? 当然是+1
    • @SonerGönül 我不知道为什么会这样。但我不相信这是由于 MS Access 设计选择......参数名称在 DAO 下运行的查询中使用时确实有意义。 “无意义”的参数名称问题似乎是 ADO/OleDb 特有的。
    【解决方案2】:

    根据查询中的顺序添加参数

      string sqlQuerry = "UPDATE aspnet_Users SET firstName=@firstName, lastName=@lastName,  Gender=@Gender, Address=@Address, Telephone=@Telephone, Course=@Course, Email=@email WHERE UserName=@UserName";
    
        OleDbCommand cmd = new OleDbCommand(sqlQuerry, oleDBConn);
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@firstName", firstName);
        cmd.Parameters.AddWithValue("@lastName", lastName);
        cmd.Parameters.AddWithValue("@Gender", Gender);
        cmd.Parameters.AddWithValue("@Address", sAddress);
        cmd.Parameters.AddWithValue("@Telephone", sTelephone);
        cmd.Parameters.AddWithValue("@Course", sCourse);
        cmd.Parameters.AddWithValue("@Email", sEmail);
        cmd.Parameters.AddWithValue("@UserName", User.Identity.Name);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-13
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2020-10-08
      相关资源
      最近更新 更多