我试图将用户数据从数据库显示到文本框中,以便用户以后可以编辑/更新该数据。
我得到错误至少没有为至少一个必需参数设置值。
我没有写SELECT * FROM,因为我没有显示像AdminRights这样的数据。
你能帮我解决一下错误吗?
这是我的代码
private void refresh_Click(object sender, RoutedEventArgs e)
{
if (!isPostBack)
{
DataTable dt = new DataTable();
con.Open();
OleDbDataReader dr = null;
OleDbCommand cmd = new OleDbCommand("SELECT [Name], [LastName], [UserName], [Password], [Address], [Email] FROM User WHERE [ID] = ?", con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
name.Text = (dr["Name"].ToString());
lName.Text = (dr["LastName"].ToString());
uName.Text = (dr["UserName"].ToString());
pass.Text = (dr["Password"].ToString());
address.Text = (dr["Address"].ToString());
email.Text = (dr["Email"].ToString());
id.Text = (dr["ID"].ToString());
}
con.Close();
}
}
答案 0 :(得分:0)
.....FROM User WHERE [ID] = ?", con);
?占位符需要在命令参数集合中定义参数。
因此,在调用ExecuteReader之前,您需要为ID字段添加参数
cmd.Parameters.AddWithValue("@p1", ????value for the ID field);
dr = cmd.ExecuteReader();
如果要从表中检索单个记录,则需要知道唯一标识表中记录的字段的值。
要获得该值,有必要了解如何获得此代码。如果从列表,网格或组合中选择一行,可能是您已使用您的用户名及其ID加载该控件。
答案 1 :(得分:0)
String id = idTextBox.Text;
OleDbCommand command = new OleDbCommand("Select *from User Where [ID]= "+ id +" ");
command.Connection = conn;
OleDbDataReader dr = null;
conn.Open();
dr = command.ExecuteReader();
while (dr.Read())
{
name.Text = (dr["Name"].ToString());
lName.Text = (dr["LastName"].ToString());
uName.Text = (dr["UserName"].ToString());
pass.Text = (dr["Password"].ToString());
address.Text = (dr["Address"].ToString());
email.Text = (dr["Email"].ToString());
id.Text = (dr["ID"].ToString());
}
conn.Close();
这将处理精细的更改行并执行