c# - 更新语句不更新我的数据

标签 c# .net database oledbconnection oledbcommand

我想更新/编辑访问数据库中 Employee 表中的用户数据。

当我完成我想更改的字段(姓名、姓氏等)时,它会给我数据更新,但是当我刷新表格时,数据没有改变 - 一直已更新。

我想要执行的更改,例如 - 将名字从 Luke 更改为 Taylor,等等。

我哪里做错了?代码中的错误在哪里?我的将用户添加到数据库的代码是否以某种方式影响了我的更新代码?

我添加用户的代码与更新的代码几乎相同,除了查询之外,它工作正常。

private void button2_Click(object sender, EventArgs e)
    {
        try
        {
            command.Connection = myConnection;
            command.CommandText = "Update Employee set Name = @Name, LastName = @LastName, UserName = @UserName, Password = @Password, E_mail = @E_mail, Address = @Address WHERE ID = @ID";
            command.Parameters.AddWithValue("@ID", userID.Text);
            command.Parameters.AddWithValue("@Name", name.Text);
            command.Parameters.AddWithValue("@LastName", lastName.Text);
            command.Parameters.AddWithValue("@UserName", userName.Text);
            command.Parameters.AddWithValue("@Password", pass.Text);
            command.Parameters.AddWithValue("@E_mail", email.Text);
            command.Parameters.AddWithValue("@Address", address.Text);

            myConnection.Open();
            command.ExecuteNonQuery();
            MessageBox.Show("User updated!");
            myConnection.Close();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

添加用户数据的代码

private void button1_Click(object sender, EventArgs e)
    {
        try
        {

            command.Connection = myConnection;
            command.CommandText = "Insert into Employee (ID, Name, LastName, UserName, Password, E_mail, Address)" + "values (@ID, @Name, @LastName, @UserName, @Password, @E_mail, @Address)";
            command.Parameters.AddWithValue("@ID", userID.Text);
            command.Parameters.AddWithValue("@Name", name.Text);
            command.Parameters.AddWithValue("@LastName", lastName.Text);
            command.Parameters.AddWithValue("@UserName", userName.Text);
            command.Parameters.AddWithValue("@Password", pass.Text);
            command.Parameters.AddWithValue("@E_mail", email.Text);
            command.Parameters.AddWithValue("@Address", address.Text);

            myConnection.Open();
            command.ExecuteNonQuery();
            MessageBox.Show("User added!");
            myConnection.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

感谢您的回复和帮助


我仍然没有解决这个问题。我已经尝试了很多东西,但我只是没有得到正确的答案。

我当前的代码

 try
        {
            OleDbConnection myConnection = new OleDbConnection("\\DATABASE PATH");
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = myConnection;
            cmd.CommandText = "UPDATE Employees SET Name = @Name, LastName = @LastName, UserName = @UserName, Password = @Password, E_mail = @E_mail, Address = @Address WHERE ID = @";

            cmd.Parameters.AddWithValue("@ID", userID.Text);
            cmd.Parameters.AddWithValue("@Name", name.Text);
            cmd.Parameters.AddWithValue("@LastName", lastName.Text);
            cmd.Parameters.AddWithValue("@UserName", userName.Text);
            cmd.Parameters.AddWithValue("@Password", pass.Text);
            cmd.Parameters.AddWithValue("@E_mail", eMail.Text);
            cmd.Parameters.AddWithValue("@Address", address.Text);

            myConnection.Open();
            cmd.ExecuteNonQuery();
            MessageBox.Show("User successfully added.");
            myConnection.Close();
        }
       catch (Exception ex)
       {
           MessageBox.Show(ex.Message);
       }

最佳答案

因为你的ID在where条件下。

您还通过以下方式更改/更新您的 ID:

command.Parameters.AddWithValue("@ID", userID.Text);

编译器在数据库中找不到这个新 ID,因为您在查询中保留了 where ID=@ID 条件。

当您只更新名称和其他字段时,查询变为:

Update Employee set Name = 'Name', LastName = 'LastName', UserName = 'UserName', Password = 'Password', E_mail = 'E_mail', Address = 'Address' WHERE ID = ''";

在这种情况下,您的 ID 可能会留空。

关于c# - 更新语句不更新我的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21089793/

相关文章:

c# - 从字符串 C# 解析 XML

c# - MVC4/IIS/Forms 身份验证 SSO 问题

c# - 将 XML 中的后代查询到 Linq

java - 使用 group by 在 mysql 中选择计数并在每一行中重复计数

c# - Entity Framework : Function Import - Code Generated In Designer But Not Recognized By Compiler

c# - 在C#中,事件是否保留对回调方法所在的整个类的引用?

c# - 使用 XmlReader 时引用外部命名字符实体?

Mysql,实现日期时间列

database - Postgresql:如何应用 pg_dump --exclude-table-data 补丁?

c# - 如何防止类被构建到发布 DLL 中?