Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MS Access数据库在文本框中显示数据_C#_Ms Access_Textbox_Oledbdataadapter_Oledbdatareader - Fatal编程技术网

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

C# 如何使用MS Access数据库在文本框中显示数据,c#,ms-access,textbox,oledbdataadapter,oledbdatareader,C#,Ms Access,Textbox,Oledbdataadapter,Oledbdatareader,我试图将数据库中的用户数据显示到文本框中,以便用户以后可以编辑/更新这些数据 至少有一个必需参数未设置任何值的Im getting error 我没有编写SELECT*FROM,因为我没有显示AdminRights之类的数据 你能帮我纠正这个错误吗 这是我的密码 private void refresh_Click(object sender, RoutedEventArgs e) { if (!isPostBack) { Data

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

至少有一个必需参数未设置任何值的Im getting error

我没有编写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();
        }
    }
那个?占位符需要在命令参数集合中定义的参数

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

 cmd.Parameters.AddWithValue("@p1", ????value for the ID field);
 dr = cmd.ExecuteReader();
如果要从表中检索单个记录,则需要知道唯一标识表中记录的字段的值。 要获得该值,必须了解如何达到该代码。如果从列表、网格或组合中选择一行,则可能已使用用户名及其ID加载该控件

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

这将很好地改变行并执行

问号应该被实际ID替换。@Abbas,该应用程序有很多用户。如果我选择一个特定ID,它将始终显示同一用户的数据。然后,您应该从数据库获取所有数据并运行foreach@Sajeetharan你能举个例子吗?但是我如何设置一个特定的参数,因为数据库中有许多不同ID的用户?有必要了解你是如何获得这段代码的。您是否从列表框、网格或类似控件中选择用户名?我使用名为“刷新”的按钮。当我点击它时,数据应该显示在文本框中,是否有用户登录到应用程序?如果是这样,请获取该用户的ID,并使用该ID从数据库中获取单个记录。
        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();