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();已经把数据读出来了,然后你再读取下一行不就为空了不?
为啥让你屏蔽呢,肯定是这行影响了结果呀