在textbox输入数据回车查询SQLserver数据库并把数据显示在对应的textbox,但textbox没有显示

private void Tbmzh_KeyDown(object sender, KeyEventArgs e)
        {
             if (e.KeyCode == Keys.Enter)
             {
                if (Tbmzh.Text == "")

                {

                    Tbmzh.Text = Tbhzxm.Text = Tbnl.Text = Tbkb.Text = Tbssmc.Text = Tbsqzd.Text = Tbmzfs.Text = Tbsz.Text = Tbzs.Text = Tbxhhs.Text = Tbmzz.Text = "";

                }
                else
                {
                    String MyConn = "Data Source=***.***.***.***; Initial Catalog=bshrp; User ID = ***; Pwd = ***";  // 连接字符串
                    SqlConnection MyConnection = new SqlConnection(MyConn); 

                    string MySearch = " select hzxm,kb,nl from bshrp.dbo.MZ_MZSS where mzh='" +Tbmzh.Text + "' ";

                    SqlCommand MyCommand = new SqlCommand(MySearch, MyConnection);

                    MyConnection.Open();
                    //MyCommand.ExecuteReader();
                    SqlDataReader myReader = MyCommand.ExecuteReader();

                    myReader.Read();
               
                    while (myReader.Read())
                    {


                        //Tbhzxm.Text = Convert.ToString(myReader["hzxm"]);
                        //Tbkb.Text = Convert.ToString(myReader["kb"]);
                        //tbnl.text = convert.tostring(myreader["nl"]);
                        //textBox3.Text = Convert.ToString(myReader["password"]);
                        //Thread.Sleep(3000);

                        Tbhzxm.Text = myReader["hzxm"].ToString().Trim();
                            


                    }
                    myReader.Close();
                    MyConnection.Close();

调试下就出来了,要么Tbhzxm.Text = myReader["hzxm"].ToString().Trim();最后一次为空要么根本就没有执行

要么sql没有查询到,要么这行不能忽略
 SqlDataReader myReader = MyCommand.ExecuteReader();

                    myReader.Read();
               
                    while (myReader.Read())
                    {


                        //Tbhzxm.Text = Convert.ToString(myReader["hzxm"]);
                        //Tbkb.Text = Convert.ToString(myReader["kb"]);
                        //tbnl.text = convert.tostring(myreader["nl"]);
                        //textBox3.Text = Convert.ToString(myReader["password"]);
                        //Thread.Sleep(3000);

                        Tbhzxm.Text = myReader["hzxm"].ToString().Trim();
                            


                    }

强烈建议这种文本框值做参数查SQL时,加上Trim()。

 string MySearch = " select hzxm,kb,nl from bshrp.dbo.MZ_MZSS where mzh='" +Tbmzh.Text.Trim() + "' ";

求解释!什么myReader.Read();这行有影响?
经测试把myReader.Read(); 删除  或者整个 while去掉  只留下 Tbhzxm.Text = myReader["hzxm"].ToString().Trim();也是可行的
小蜜蜂论坛顶帖机谁能解释一下

你怎么想不到是这行myReader.Read();已经把数据读出来了,然后你再读取下一行不就为空了不?
为啥让你屏蔽呢,肯定是这行影响了结果呀

发布了74 篇原创文章 · 获赞 0 · 访问量 3075

猜你喜欢

转载自blog.csdn.net/netyou/article/details/104552423
今日推荐