1

我试图将数据库中的用户数据显示到文本框中,以便用户稍后可以编辑/更新该数据。

已经为至少一个必需的参数设置了没有值的错误。

我没有写 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();
        }
    }
4

2 回答 2

0
.....FROM User WHERE [ID] = ?", con);

这 ?占位符需要在命令参数集合中定义的参数。

因此,在调用 ExecuteReader 之前,您需要为 ID 字段添加参数

 cmd.Parameters.AddWithValue("@p1", ????value for the ID field);
 dr = cmd.ExecuteReader();

如果要从表中检索单个记录,则需要知道唯一标识表中记录的字段的值。
要获得该值,有必要了解如何访问此代码。如果您从列表、网格或组合中选择一行,则可能您已经使用您的用户名和他们的 ID 加载了该控件。

于 2014-03-24T16:03:02.827 回答
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();

这将工作正常更改行并执行

于 2017-05-24T13:36:49.287 回答