C# 向数据库添加数数据,检验数据库中是否存在相同的数据

时间:2022-10-17 00:00:58
C# 向数据库添加数数据,检验数据库中是否存在相同的数据
请教各位前辈一个简单的问题,上图上,关于把数据保存到数据库中我已经做好了,我的主码是“房号”,现在我如果向数据库中添加一个相同的“房号”,就报错,我想了一个下午解决这个问题来实现这个结果,比如:如果我输入了一个数据库中存储了的数据,弹出一个MessageBox提示,虽然简单,我却弄不懂,请您指教!

12 个解决方案

#1


你可以向数据库查询这个房间号
select  房间号  from  表  where  房间号=11
如果返回了结果就存在,弹出对话框:已存在

如果没有返回结果,就继续插入insert

#2


Update table set columem=value
if @@rowcount==0
insert into

#3


可以在房号这个文本框失去焦点的事件里写代码,代码的作用就是去数据库里查询是否有该记录,有就提示出错,并让焦点回到该文本框。

private void textBox1_Leave(object sender, EventArgs e)
        {
            SqlConnection sqlcon = new SqlConnection("Data Source=.;Initial Catalog=zwk;Integrated Security=True");
            sqlcon.Open();
            string sql = "select  房间号  from  表  where  房间号='"+textBox1.Text.Trim()+"'";
            SqlCommand sqlcom = new SqlCommand(sql, sqlcon);
            if(sqlcom.ExecuteNonQuery()==1)
            {
                MessageBox.Show("已存在该房间号!","提示");
                textBox1.Focus();
            }

        }

#4


学习.

#5


try
{
执行插入
}
catch
{
提示插入失败
}

#6


为什么不让房号自己增加呢,或者先查此房号是否被使用后再加

#7


hg

#8


引用 3 楼 zhangwike 的回复:
可以在房号这个文本框失去焦点的事件里写代码,代码的作用就是去数据库里查询是否有该记录,有就提示出错,并让焦点回到该文本框。
C# codeprivatevoid textBox1_Leave(object sender, EventArgs e)
        {
            SqlConnection sqlcon=new SqlConnection("Data Source=.;Initial Catalog=zwk;Integrated Security=True");
            sqlcon.Open();string sql="select  房间号  from  表  where  房间号='"+textBox1.Text.Trim()+"'";
            SqlCommand sqlcom=new SqlCommand(sql, sqlcon);if(sqlcom.ExecuteNonQuery()==1)
            {
                MessageBox.Show("已存在该房间号!","提示");
                textBox1.Focus();
            }

        }



      private void button1_Click(object sender, EventArgs e)
        {
            string M_str_temsql;
            SqlDataReader sqlread = boperate.getread("Select  房号 from fwjbxx");
            sqlread.Read();
            M_str_temsql = sqlread.ToString();
            if (fanghao.Text == "")
            {
                MessageBox.Show("房号不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (!opAndvalidate.validateNum(fangjia.Text.Trim()))
                {
                    errorshiyongmianji.Clear();
                    errorfanghao.Clear();
                    errorjianzumianji.Clear();
                    errorfangjia.SetError(fangjia, "房价格式错误!");
                }
                else if (!opAndvalidate.validateNum(shiyongmianji.Text.Trim()))
                {
                    errorfangjia.Clear();
                    errorfanghao.Clear();
                    errorjianzumianji.Clear();
                    errorshiyongmianji.SetError(shiyongmianji,"使用面积格式错误!");
                }
                else if (!opAndvalidate.validateNum(jianzumianji.Text.Trim()))
                {
                    errorfanghao.Clear();
                    errorfangjia.Clear();
                    errorjianzumianji.Clear();
                    errorjianzumianji.SetError(jianzumianji, "建筑面积格式错误!");
                }
                else
                {
                    errorfanghao.Clear();
                    errorfangjia.Clear();
                    errorjianzumianji.Clear();
                    errorjianzumianji.Clear();
                 
                  
                        boperate.getcom("insert into fwjbxx(房号,户型,建筑面积,使用面积,房价,房屋结构,装修情况,是否签约,是否空房) "
                            + "values('" + fanghao.Text.Trim() + "','" + huxing.Text.Trim() + "','" + jianzumianji.Text.Trim()
                            + "','" + shiyongmianji.Text.Trim() + "','" + fangjia.Text.Trim() + "','" + jiegou.Text.Trim() + "','"
                            + zhuangxiu.Text.Trim() + "','" + qianyue.Text.Trim() + "','" + kongfang.Text.Trim() + "')");
                        fczh_add_Load(sender, e);
                        MessageBox.Show("房屋基本信息添加成功!请添加下条记录,如果没有记录,直接退出,点刷新可以直接看到数据库中的数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        num += 1;
                        fanghao.Text = "";
                        huxing.Text = "";
                        jianzumianji.Text = "";
                        shiyongmianji.Text = "";
                        fangjia.Text = "";
                        jiegou.Text = "";
                        zhuangxiu.Text = "";
                        qianyue.Text = "";
                        kongfang.Text = "";
                        labNum.Text = "已经向数据库添加了" + " " + num + " " + "条记录!确认添加完成点“取消”按钮回到“房产综合管理界面”,点击“刷新”查看记录。";
                   
                    }
                }
            }


非常感谢的回答,我非常喜欢3楼 zhangwike 的回答,可是你的方法我用了,好像没有执行您的那个textBox控件,6楼前辈的方法确实很好,我也想过,可是代码实现我确实不会,我是初学者,5楼hsbhljl是我认为的最后一步解决方案,可是相对于系统来说,我还是希望能够通过更好的交互式来实现,请各位看以上代码,相比都是高手了,请各位前辈指点迷津,在下感恩不尽……

 
  

#9


where not exisits

#10


    public static bool AddhouseinfoToDatabase(houseInfo house)
        {
            SqlConnection con = new SqlConnection(_ConString);

            try
            {
                //连接数据库中                            
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                con.Open();

                cmd.CommandText = string.Format("select * from sysobjects where 房号=house.num);
                SqlDataReader dr = cmd.ExecuteReader();

                int a = 0;
                while (dr.Read())
                {
                    a = 1;
                }
                dr.Close();
                if (a == 1)
                {MessageBox.Show("已存在该房间号!","提示");}

             

             
                return true;
            }
            catch (Exception)
            {
                return false;
            }
            finally
            {
                //关闭连接
                con.Close();
            }
        }

#11


非常感谢大家的帮助,用了5楼的方法已经出现了效果,简单实用,非常感谢您,也非常感谢3楼,及各位辛苦敲代码。

#12


需要

#1


你可以向数据库查询这个房间号
select  房间号  from  表  where  房间号=11
如果返回了结果就存在,弹出对话框:已存在

如果没有返回结果,就继续插入insert

#2


Update table set columem=value
if @@rowcount==0
insert into

#3


可以在房号这个文本框失去焦点的事件里写代码,代码的作用就是去数据库里查询是否有该记录,有就提示出错,并让焦点回到该文本框。

private void textBox1_Leave(object sender, EventArgs e)
        {
            SqlConnection sqlcon = new SqlConnection("Data Source=.;Initial Catalog=zwk;Integrated Security=True");
            sqlcon.Open();
            string sql = "select  房间号  from  表  where  房间号='"+textBox1.Text.Trim()+"'";
            SqlCommand sqlcom = new SqlCommand(sql, sqlcon);
            if(sqlcom.ExecuteNonQuery()==1)
            {
                MessageBox.Show("已存在该房间号!","提示");
                textBox1.Focus();
            }

        }

#4


学习.

#5


try
{
执行插入
}
catch
{
提示插入失败
}

#6


为什么不让房号自己增加呢,或者先查此房号是否被使用后再加

#7


hg

#8


引用 3 楼 zhangwike 的回复:
可以在房号这个文本框失去焦点的事件里写代码,代码的作用就是去数据库里查询是否有该记录,有就提示出错,并让焦点回到该文本框。
C# codeprivatevoid textBox1_Leave(object sender, EventArgs e)
        {
            SqlConnection sqlcon=new SqlConnection("Data Source=.;Initial Catalog=zwk;Integrated Security=True");
            sqlcon.Open();string sql="select  房间号  from  表  where  房间号='"+textBox1.Text.Trim()+"'";
            SqlCommand sqlcom=new SqlCommand(sql, sqlcon);if(sqlcom.ExecuteNonQuery()==1)
            {
                MessageBox.Show("已存在该房间号!","提示");
                textBox1.Focus();
            }

        }



      private void button1_Click(object sender, EventArgs e)
        {
            string M_str_temsql;
            SqlDataReader sqlread = boperate.getread("Select  房号 from fwjbxx");
            sqlread.Read();
            M_str_temsql = sqlread.ToString();
            if (fanghao.Text == "")
            {
                MessageBox.Show("房号不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (!opAndvalidate.validateNum(fangjia.Text.Trim()))
                {
                    errorshiyongmianji.Clear();
                    errorfanghao.Clear();
                    errorjianzumianji.Clear();
                    errorfangjia.SetError(fangjia, "房价格式错误!");
                }
                else if (!opAndvalidate.validateNum(shiyongmianji.Text.Trim()))
                {
                    errorfangjia.Clear();
                    errorfanghao.Clear();
                    errorjianzumianji.Clear();
                    errorshiyongmianji.SetError(shiyongmianji,"使用面积格式错误!");
                }
                else if (!opAndvalidate.validateNum(jianzumianji.Text.Trim()))
                {
                    errorfanghao.Clear();
                    errorfangjia.Clear();
                    errorjianzumianji.Clear();
                    errorjianzumianji.SetError(jianzumianji, "建筑面积格式错误!");
                }
                else
                {
                    errorfanghao.Clear();
                    errorfangjia.Clear();
                    errorjianzumianji.Clear();
                    errorjianzumianji.Clear();
                 
                  
                        boperate.getcom("insert into fwjbxx(房号,户型,建筑面积,使用面积,房价,房屋结构,装修情况,是否签约,是否空房) "
                            + "values('" + fanghao.Text.Trim() + "','" + huxing.Text.Trim() + "','" + jianzumianji.Text.Trim()
                            + "','" + shiyongmianji.Text.Trim() + "','" + fangjia.Text.Trim() + "','" + jiegou.Text.Trim() + "','"
                            + zhuangxiu.Text.Trim() + "','" + qianyue.Text.Trim() + "','" + kongfang.Text.Trim() + "')");
                        fczh_add_Load(sender, e);
                        MessageBox.Show("房屋基本信息添加成功!请添加下条记录,如果没有记录,直接退出,点刷新可以直接看到数据库中的数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        num += 1;
                        fanghao.Text = "";
                        huxing.Text = "";
                        jianzumianji.Text = "";
                        shiyongmianji.Text = "";
                        fangjia.Text = "";
                        jiegou.Text = "";
                        zhuangxiu.Text = "";
                        qianyue.Text = "";
                        kongfang.Text = "";
                        labNum.Text = "已经向数据库添加了" + " " + num + " " + "条记录!确认添加完成点“取消”按钮回到“房产综合管理界面”,点击“刷新”查看记录。";
                   
                    }
                }
            }


非常感谢的回答,我非常喜欢3楼 zhangwike 的回答,可是你的方法我用了,好像没有执行您的那个textBox控件,6楼前辈的方法确实很好,我也想过,可是代码实现我确实不会,我是初学者,5楼hsbhljl是我认为的最后一步解决方案,可是相对于系统来说,我还是希望能够通过更好的交互式来实现,请各位看以上代码,相比都是高手了,请各位前辈指点迷津,在下感恩不尽……

 
  

#9


where not exisits

#10


    public static bool AddhouseinfoToDatabase(houseInfo house)
        {
            SqlConnection con = new SqlConnection(_ConString);

            try
            {
                //连接数据库中                            
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                con.Open();

                cmd.CommandText = string.Format("select * from sysobjects where 房号=house.num);
                SqlDataReader dr = cmd.ExecuteReader();

                int a = 0;
                while (dr.Read())
                {
                    a = 1;
                }
                dr.Close();
                if (a == 1)
                {MessageBox.Show("已存在该房间号!","提示");}

             

             
                return true;
            }
            catch (Exception)
            {
                return false;
            }
            finally
            {
                //关闭连接
                con.Close();
            }
        }

#11


非常感谢大家的帮助,用了5楼的方法已经出现了效果,简单实用,非常感谢您,也非常感谢3楼,及各位辛苦敲代码。

#12


需要