关于c#中数据库不能键入重复键的问题 请给位高手帮帮忙

privatevoidbutton2_Click(objectsender,EventArgse){if(textBox1.Text.Trim()!=""&&textBo... private void button2_Click(object sender, EventArgs e)
{
if(textBox1.Text.Trim()!=""&&textBox2.Text.Trim()!=""&&
textBox3.Text.Trim()!=""&&textBox4.Text.Trim()!=""&&textBox5.Text.Trim()!=""&&textBox6.Text.Trim()!=""&&
comboBox1.Text.Trim()!=""&& comboBox2.Text.Trim()!=""&& comboBox3.Text.Trim()!=""&& comboBox4.Text.Trim()!="")
{
SqlConnection conn = new SqlConnection(@"server=XHAN\SQLEXPRESS;database=students;integrated security=true");
conn.Open();

SqlCommand cmd=new SqlCommand("select * from studentinfo where studentnumber='"+textBox1.Text.Trim()+"'",conn);

if(cmd.ExecuteNonQuery()>0)
{
MessageBox.Show("学号重复","操作提示");
}
else
{
string sql1,sql2,sql;
sql1="insert into StudentInfo(StudentNumber,Name,Sex,Race,Address,Phone,Role,PostalCode,ClassID";
sql2 = "values('" + textBox1.Text.Trim() + "','" + textBox2.Text.Trim() + "','" + comboBox1.Text.Trim() + "','" + textBox3.Text.Trim() + "','" +
textBox4.Text.Trim() + "','" + textBox5.Text.Trim() + "','" + comboBox2.Text.Trim() + "','" + textBox6.Text.Trim() + "','" +
comboBox4.SelectedValue.ToString();

if (richTextBox1.Text.Trim() != "")
{
sql1 = sql1 + ",Remark";
sql2 = sql2 + "','" + richTextBox1.Text.Trim();
sql = sql1 + ")" + sql2 + "')";
}
else
{
sql = sql1 + ")" + sql2 + "')";
}
cmd.CommandText=sql;
cmd.ExecuteNonQuery();
MessageBox.Show("添加学生信息成功","操作提示");
conn.Close();
}
}
else
{
MessageBox.Show("请将信息输入完整","操作提示");
}
}

其中textBox是用来输入学号的 怎么才能让他输入重复学号的时候显示那个重复学号的消息盒子啊 求给位高手帮忙
展开
 我来答
百度网友a7339fa40
2011-11-14 · TA获得超过703个赞
知道小有建树答主
回答量:389
采纳率:0%
帮助的人:238万
展开全部
你好!
首先你要明白cmd.ExecuteNonQuery()意思,它的意思是执行数据库语句返回受影响的行数,再说简单点就是添加,删除,更新时受影响的行数,而你验证重复的sql语句是
select * from studentinfo where studentnumber='"+textBox1.Text.Trim()+"'"
这个是查询数据库的,返回的是一个数据集,所有你的cmd.ExecuteNonQuery()永远不可能大于0.
改正方法有多种,我就列举两种:
第一种:
SqlCommand cmd=new SqlCommand("select count(*) from studentinfo where studentnumber='"+textBox1.Text.Trim()+"'",conn);
判断的时候就是 if(cmd.ExecuteScalar()>0)....
第二种
SqlDbDataAdapter sda=new SqlDbDataAdapter("select count(*) from studentinfo where studentnumber='"+textBox1.Text.Trim()+"'",conn);
DataTable dt=new DataTable ();
sda.Fill(dt);
if(dt.Rows.Count>0)
{
MessageBox.Show("学号重复","操作提示");
}
else
{
....
}
更多追问追答
追问
您好 两种都尝试了 没好使啊 用第一种改的就是这语句if(cmd.ExecuteScalar()>0)....
运算符“>”无法应用于“object”和“int”类型的操作数 第二种没用明白 我初学 您多帮帮忙 教教我呗
追答
额,抱歉,手打的没注意
if(cmd.ExecuteScalar()>0)....
这个转换一下就OK了,前面加(int)cmd.ExecuteScalar()>0.
同时也说说第二种
SqlDbDataAdapter 也是执行sql语句用于填充DataSet,或者DataTable,说简单点,它就是用来查询SQL从而返回一个表的集合用于绑定或显示的
DataTable dt=new DataTable ();
sda.Fill(dt);//填充到DataTable
后面就是申明一个DataTable 用来接收这个数据集,当然DataSet也可以,得到的结果就跟你在SQL看有数据的表是一个样的
dt.Rows就是代表它的行,你检查是否重复,有一行就代表它重复了,所有判断它是否大于0
微澜科技
2011-11-14 · TA获得超过522个赞
知道小有建树答主
回答量:721
采纳率:0%
帮助的人:434万
展开全部
SqlConnection conn = new SqlConnection(@"server=XHAN\SQLEXPRESS;database=students;integrated security=true");
conn.Open();

SqlCommand cmd=new SqlCommand("select * from studentinfo where studentnumber='"+textBox1.Text.Trim()+"'",conn);

if(cmd.ExecuteNonQuery()>0)
{
MessageBox.Show("学号重复","操作提示");
}
============
这个简单,把你这检查的这步,放在TEXTBOX1 事件检查。
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
//写重复检查。
}
如果重复提示信息。
双击TEXTBOX1就可以了。注意设置为AUTOPOSTBACK=true。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式