C#如何判断输入在文本框内的数据是否存在数据库中??
SqlConnectionconn;privatevoidFormDepartmentFilesFind_Load(objectsender,EventArgse)//窗...
SqlConnection conn;
private void FormDepartmentFilesFind_Load(object sender, EventArgs e)//窗体
{
conn = new SqlConnection("server=172.16.43.55;database=CateringDB;uid=sa;pwd=123456");//连接数据库
}
private void button1_Click(object sender, EventArgs e)//“查找”按钮
{
if (Textname.Text == "")
{
MessageBox.Show("部门名称不能为空,请输入部门名称");
}
else
{
conn.Open();//打开数据库连接
SqlCommand cmd = new SqlCommand("select * from tbl_Department_Info where deptName='" + Textname.Text.Trim() + "'", conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
//将在数据库中查询到的信息显示出来
listView1.Items.Add(reader[0].ToString());
listView2.Items.Add(reader[1].ToString());
listView3.Items.Add(reader[2].ToString());
listView4.Items.Add(reader[3].ToString());
listView5.Items.Add(reader[4].ToString());
}
if (!reader.Read())
{
MessageBox.Show("此部门不存在");
}
else
{
button1.Enabled = false;//使按钮不可点击
}
conn.Close();
}
}
查找不存在的部门时是正确的
但是查找存在的部门时还是会弹出提示框
求大神指点下!!! 展开
private void FormDepartmentFilesFind_Load(object sender, EventArgs e)//窗体
{
conn = new SqlConnection("server=172.16.43.55;database=CateringDB;uid=sa;pwd=123456");//连接数据库
}
private void button1_Click(object sender, EventArgs e)//“查找”按钮
{
if (Textname.Text == "")
{
MessageBox.Show("部门名称不能为空,请输入部门名称");
}
else
{
conn.Open();//打开数据库连接
SqlCommand cmd = new SqlCommand("select * from tbl_Department_Info where deptName='" + Textname.Text.Trim() + "'", conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
//将在数据库中查询到的信息显示出来
listView1.Items.Add(reader[0].ToString());
listView2.Items.Add(reader[1].ToString());
listView3.Items.Add(reader[2].ToString());
listView4.Items.Add(reader[3].ToString());
listView5.Items.Add(reader[4].ToString());
}
if (!reader.Read())
{
MessageBox.Show("此部门不存在");
}
else
{
button1.Enabled = false;//使按钮不可点击
}
conn.Close();
}
}
查找不存在的部门时是正确的
但是查找存在的部门时还是会弹出提示框
求大神指点下!!! 展开
4个回答
展开全部
这个你可以在if (!reader.Read())处下断点看看read.Read()执行的记过是什么。
或者把 button1_Click里面的else改成我写的试试:
else
{
conn.Open();//打开数据库连接
SqlCommand cmd = new SqlCommand("select * from tbl_Department_Info where deptName='" + Textname.Text.Trim() + "'", conn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
//将在数据库中查询到的信息显示出来
listView1.Items.Add(reader[0].ToString());
listView2.Items.Add(reader[1].ToString());
listView3.Items.Add(reader[2].ToString());
listView4.Items.Add(reader[3].ToString());
listView5.Items.Add(reader[4].ToString());
button1.Enabled = false;//使按钮不可点击
}
else
{
MessageBox.Show("此部门不存在");
}
read.Close();---read打开了要关闭
conn.Close();
}
或者把 button1_Click里面的else改成我写的试试:
else
{
conn.Open();//打开数据库连接
SqlCommand cmd = new SqlCommand("select * from tbl_Department_Info where deptName='" + Textname.Text.Trim() + "'", conn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
//将在数据库中查询到的信息显示出来
listView1.Items.Add(reader[0].ToString());
listView2.Items.Add(reader[1].ToString());
listView3.Items.Add(reader[2].ToString());
listView4.Items.Add(reader[3].ToString());
listView5.Items.Add(reader[4].ToString());
button1.Enabled = false;//使按钮不可点击
}
else
{
MessageBox.Show("此部门不存在");
}
read.Close();---read打开了要关闭
conn.Close();
}
更多追问追答
追问
试过了,可以,谢谢,reader.Close()这个为什么一定要关闭了?没关闭会有什么后果吗?
追答
就行conn打开了不用也要关闭一样,这个开着不关闭貌似就不会释放占用的内存,若果不关闭的话在下次再使用read()方法的时候会报错。
展开全部
while (reader.Read())运行完以后reader.Read()一定返回false
而你下面又if (!reader.Read()) MessageBox.Show("此部门不存在");
所以必定会弹出不存在的提示框
而你下面又if (!reader.Read()) MessageBox.Show("此部门不存在");
所以必定会弹出不存在的提示框
更多追问追答
追问
遍历打印是把找到的那一行数据打印出来。
那怎么加一个标记进行判断?
追答
while (reader.Read())
{
//将在数据库中查询到的信息显示出来
listView1.Items.Add(reader[0].ToString());
listView2.Items.Add(reader[1].ToString());
listView3.Items.Add(reader[2].ToString());
listView4.Items.Add(reader[3].ToString());
listView5.Items.Add(reader[4].ToString());
}
if (!reader.Read())
{
MessageBox.Show("此部门不存在");
}
改成
if(reader.Read())
{
//将在数据库中查询到的信息显示出来
listView1.Items.Add(reader[0].ToString());
listView2.Items.Add(reader[1].ToString());
listView3.Items.Add(reader[2].ToString());
listView4.Items.Add(reader[3].ToString());
listView5.Items.Add(reader[4].ToString());
}
else
{
MessageBox.Show("此部门不存在");
}
这样的话如果有数据就显示,没有数据就提示不存在
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
// 下面这一句判断方法不对。
if (!reader.Read())
{
MessageBox.Show("此部门不存在");
}
改成
if(listView1.Items.Count <=0){
MessageBox.Show("此部门不存在");
}
if (!reader.Read())
{
MessageBox.Show("此部门不存在");
}
改成
if(listView1.Items.Count <=0){
MessageBox.Show("此部门不存在");
}
更多追问追答
追问
成功了,谢谢!!!,,我已经知道错在哪了,那这么改有什么根据吗?
追答
while(reader.Read() )
当reader.Read()为false时,循环语句会退出,while都退出了reader.Read()永远为false,此时你还用它来判断是否有数据?是不正确的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-19
展开全部
我认为是缺少reader.Close();这个方法不能丢。你试试
更多追问追答
追问
哦,为什么呢?
追答
你把if (reader==Null) 替换if (!reader.Read())肯定对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询