如何使用MS Access数据库在文本框中显示数据

时间:2014-03-24 16:01:22

标签: c# ms-access textbox oledbdataadapter oledbdatareader

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

我得到错误至少没有为至少一个必需参数设置值。

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

2 个答案:

答案 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();

这将处理精细的更改行并执行