使用c#和ms access进行编辑
我遇到问题,我尝试了以下代码:使用c#和ms access进行编辑,c#,ms-access,edit,C#,Ms Access,Edit,我遇到问题,我尝试了以下代码: private void button1_Click(object sender, RoutedEventArgs e) { conn.Open(); OleDbCommand cmd = new OleDbCommand("UPDATE tbl_Fullname SET Firstname=@firstn,Lastname=@lastn,Middlename=@midn WHERE fnID=@idn", conn
private void button1_Click(object sender, RoutedEventArgs e)
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("UPDATE tbl_Fullname SET Firstname=@firstn,Lastname=@lastn,Middlename=@midn WHERE fnID=@idn", conn);
cmd.Parameters.Add("@idn", OleDbType.VarChar).Value = textBox5.Text;
cmd.Parameters.Add("@firstn", OleDbType.VarChar).Value = textBox1.Text;
cmd.Parameters.Add("@lastn", OleDbType.VarChar).Value = textBox2.Text;
cmd.Parameters.Add("@midn", OleDbType.VarChar).Value = textBox3.Text;
cmd.ExecuteNonQuery();
conn.Close();
}
没有错误,但当我检查我的数据库访问时,没有任何更改
这就是UpdateInt和编辑的确切代码吗
这是我的全部代码:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
private void button3_Click(object sender, RoutedEventArgs e)
{
OleDbCommand cmd = new OleDbCommand("INSERT INTO tbl_Fullname (Lastname,Firstname,Middlename) VALUES (@first,@last,@midn)",conn);
conn.Open();
cmd.Parameters.Add("@first", OleDbType.VarChar).Value = textBox1.Text;
cmd.Parameters.Add("@last", OleDbType.VarChar).Value = textBox2.Text;
cmd.Parameters.Add("@midn", OleDbType.VarChar).Value = textBox3.Text;
cmd.ExecuteNonQuery();
conn.Close();
}
private void textBox4_TextChanged(object sender, TextChangedEventArgs e)
{
conn.Open();
OleDbCommand cmd2 = new OleDbCommand("SELECT fnID,Lastname,Firstname,Middlename FROM tbl_Fullname WHERE fnID= @id", conn);
cmd2.Parameters.Add("@id", OleDbType.VarChar).Value = textBox4.Text;
try
{
OleDbDataReader dr = cmd2.ExecuteReader();
if (dr.Read())
{
textBox1.Text = dr[1].ToString();
textBox2.Text = dr[2].ToString();
textBox3.Text = dr[3].ToString();
textBox5.Text = dr[0].ToString();
}
else
{
MessageBox.Show("No result");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
conn.Close();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("UPDATE tbl_Fullname SET Firstname=@firstn,Lastname=@lastn,Middlename=@midn WHERE fnID=@idn", conn);
cmd.Parameters.Add("@idn", OleDbType.VarChar).Value = textBox5.Text;
cmd.Parameters.Add("@firstn", OleDbType.VarChar).Value = textBox1.Text;
cmd.Parameters.Add("@lastn", OleDbType.VarChar).Value = textBox2.Text;
cmd.Parameters.Add("@midn", OleDbType.VarChar).Value = textBox3.Text;
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
我希望有人能帮助我。我非常需要它。提前感谢您。MSDN说:
当CommandType设置为Text时,OLE DB.NET提供程序不支持将参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数。在这种情况下,必须使用问号(?)占位符。例如:
从CustomerID=?的客户中选择*
因此,OLEDBPParameter对象添加到OLEDBPParameterCollection的顺序必须直接对应于命令文本中参数的问号占位符的位置
那么就这样吧:
private void button1_Click(object sender, RoutedEventArgs e)
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("UPDATE tbl_Fullname SET Firstname=?,Lastname=?,Middlename=? WHERE fnID=?", conn);
cmd.Parameters.Add("@firstn", OleDbType.VarChar).Value = textBox1.Text;
cmd.Parameters.Add("@lastn", OleDbType.VarChar).Value = textBox2.Text;
cmd.Parameters.Add("@midn", OleDbType.VarChar).Value = textBox3.Text;
cmd.Parameters.Add("@idn", OleDbType.VarChar).Value = textBox5.Text;
cmd.ExecuteNonQuery();
conn.Close();
}
请注意,参数的顺序在这里很重要 在SQL周围添加try/catch,并输出sqlCommand Exeption
也可以看到我找到的这个链接,在这里您可以看到如何正确地插入、更新等等。您的连接字符串是什么样子的?是否确定代码正在运行,即事件已正确连接?您可以通过显示弹出消息等明显的操作进行测试。