OleDb 更新 database.mdb

OleDb Update database.mdb

当我使用 CustomButton 将“Full_Name”保存在数据库 [Rooms] => Person 中时,什么也没有发生。另外,如果我使用 try & catch 函数,也不会有异常。 数据库中的字段保持为空。

当我在 MessageBox (idPlus2, Full_Name) 中显示所需的变量时,它会返回正确的信息。

所以我认为问题一定出在 UPDATE Sql 字符串中,但我不知道出了什么问题。

private string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\....mdb";
//Path anonymous
string Full_Name;
 [Obsolete]
    private void customButton1_Click(object sender, EventArgs e)
    {
        conn = new OleDbConnection(connstr);
        conn.Open();
        strSQL = "SELECT * FROM [Guests] WHERE ID = ?";
        cmd = new OleDbCommand(strSQL, conn);
        da = new OleDbDataAdapter(cmd);
        int id = CustomComboBox1.SelectedIndex;
        int idPlus = id + 1;
        cmd.Parameters.Add("?", idPlus);
        OleDbDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            Full_Name = reader["Vorname"].ToString() + ' ' + reader["Nachname"].ToString();
        }
        reader.Close();
        string insertQuery = @"UPDATE [Rooms] SET Person = @Full_Name WHERE ID = ?";
        cmd = new OleDbCommand(insertQuery, conn);
        int id2 = customComboBox2.SelectedIndex;
        int idPlus2 = id2 + 2;
        cmd.Parameters.Add("?", idPlus2);
        cmd.Parameters.Add(new OleDbParameter("@Full_Name", Full_Name));
        cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();
        conn.Close();
        LoadTheme();
    }

我有答案

cmd.Parameters.Add("?", OleDbType.VarChar, 255).Value = CustomComboBox1.Texts;
cmd.Parameters.Add("?", idPlus2);

对于OleDb,您必须对每个应添加到数据库的变量或对象使用?。这意味着您不能在 SQL 字符串中按名称指定变量。您必须使用与 C# 代码中的 SQL 字符串相同的顺序来插入参数。