如何从SQL获取数据并将其写入文本框?

时间:2018-04-23 05:38:00

标签: c# sql sql-server

我需要帮助。

我搜索过并且尝试了很多,但是我太糟糕了,不能让它自己完成我的项目。

这是button-Seek的代码。我想让Seek-button按相应的数据填充文本框。

    private void SeekClick(object sender, EventArgs e)
    {
        if (TBCusNumber.Text != "")
        {
            string Number = TBCusNumber.Text;

            var Conn = new SqlConnection();
            Conn.ConnectionString = ConfigurationManager.ConnectionStrings["WindowsFormsApp1.Properties.Settings.DataBase"].ConnectionString;

            var Cmd = new SqlCommand();
            Cmd.Connection = Conn;
            Cmd.CommandText = "SELECT * FROM CustomerList WHERE CustomerNumber = " + Number;

            var DataAdapter = new SqlDataAdapter(Cmd);
            DataSet DataSet = new DataSet();
            DataAdapter.Fill(DataSet, "CustomerList");

            CusView.DataSource = DataSet;
            CusView.DataMember = "CustomerList";
        }
    }

这是数据表。 enter image description here

当我在文本框中输入3并按下Seek-button时会发生这种情况。 enter image description here

所以在这里,我希望所有文本框都被我搜索的数据填充。

2 个答案:

答案 0 :(得分:2)

您的查询只能获得一行吗?

所以就这样说吧,

txtFirstName.Text = DataSet.Tables[0].Rows[0]["FirstName"].ToString();
txtLasttName.Text = DataSet.Tables[0].Rows[0]["LastName"].ToString();

像这样,您需要将值分配给相应的文本框。

答案 1 :(得分:1)

需要修复三个问题。

  1. 您忘记打开与DB的连接,在执行sql命令之前添加Conn.Open();
  2. 您需要将参数添加到预防SQL Injection
  3. 请使用using它将帮助您使用外部资源返回内存。
  4. 当填充DataSet时,您可以获取数据,然后填写文本框

    你可以这样跟着。

    private void SeekClick(object sender, EventArgs e)
    {
        if (TBCusNumber.Text != "")
        {
            string Number = TBCusNumber.Text;
    
            using (var Conn = new SqlConnection())
            {
                Conn.ConnectionString = ConfigurationManager.ConnectionStrings["WindowsFormsApp1.Properties.Settings.DataBase"].ConnectionString;
                using (var Cmd = new SqlCommand())
                {
                    Cmd.Connection = Conn;
                    Cmd.CommandText = "SELECT * FROM CustomerList WHERE CustomerNumber = @Number";
    
                    Cmd.Parameters.AddWithValue("@Number", Number);
                    //You miss to add Conn.Open()
                    Conn.Open();
                    using (var DataAdapter = new SqlDataAdapter(Cmd))
                    {
                        DataSet DataSet = new DataSet();
                        DataAdapter.Fill(DataSet, "CustomerList");
                        CusView.DataSource = DataSet;
                        CusView.DataMember = "CustomerList";
    
                        //when the DataSet be filled you can get the data then fill in textbox
                        txt_firstName.Text = DataSet.Tables[0].Rows[0]["FirstName"].ToString();
                    }
                }
            }
        }
    }