关于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是用来输入学号的 怎么才能让他输入重复学号的时候显示那个重复学号的消息盒子啊 求给位高手帮忙 展开
{
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是用来输入学号的 怎么才能让他输入重复学号的时候显示那个重复学号的消息盒子啊 求给位高手帮忙 展开
2个回答
展开全部
你好!
首先你要明白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
{
....
}
首先你要明白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
展开全部
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。
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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询