首页 > 学院 > 开发设计 > 正文

VisualStudio2013内置SQLServer入门(二)--增删改查

2019-11-14 14:01:28
字体:
来源:转载
供稿:网友

前一篇 http://www.VEVb.com/qixi233/p/4766451.html

这篇是sqlserver的操作

界面比较走心哈哈哈,将就着看,主要就是下面增删改查四个btn

对于sqlserver的操作基本就几个:

  •   开关SqlConnection
  •       SqlCommand将"SQL命令"与"SQLConnection"连接
  •   执行命令并根据返回值来将操作结果反馈给用户

现在开始操作:(代码比较简单,如果有书写不够规范之处请告知谢谢)

代码结构:

  

数据库视图:

  

  0.       开关数据库连接

      优先于四大操作的存在,每次用户操作之前开启,每次用户操作之后关闭

        /// <summary>        /// 开启数据库        /// </summary>        PRivate void openCon() {            string str_con = "server=(LocalDB)//v11.0;database=master;integrated security=true";            con = new SqlConnection(str_con);            if (con.State == ConnectionState.Closed)            {                con.Open();                return;            }            if(con.State==ConnectionState.Broken){                con.Close();                con.Open();            }        }        /// <summary>        /// 关闭数据库        /// </summary>        private void closeCon() {            if (con.State !=ConnectionState.Closed) {                con.Close();                con.Dispose();            }        }

 

  1.   查
    1.   根据id查询数据库中是否存在对应数据,有则返回,没有则提示
    2.         #region btn_查询        private void btn_check_Click(object sender, RoutedEventArgs e)        {            openCon();            //查询是否有id            if (tb_id.Text.Trim() != "")            {                string sql_cmd = "select userName,cardType from tb_card where cardID='" + tb_id.Text.Trim() + "'";                //可以试试用open直接返回SqlConnection对象,然后查询暂时不封装                using (cmd = new SqlCommand(sql_cmd, con))                {                    using (SqlDataReader reader = cmd.ExecuteReader())                    {                        if (reader.Read())                        {                            tb_name.Text = reader.GetString(0);                            tb_type.Text = reader.GetString(1);                        }                        else                        {                            MessageBox.Show("查询失败");                        }                    }                }            }            else            {                MessageBox.Show("id输入框不得为空");            }            closeCon();        }         #endregion

       

  2.       增
    1.   检查是否存在id,不存在则添加
    2.         #region btn_添加        private void btn_add_Click(object sender, RoutedEventArgs e)        {            openCon();            if (tb_id.Text.Trim() != "" && tb_name.Text.Trim() != "" && tb_type.Text.Trim() != "")            {                try                {                    //查询是否有id                    string cmd_check = "select userName,cardType from tb_card where cardID='" + tb_id.Text.Trim() + "'";                    using (cmd = new SqlCommand(cmd_check, con))                    {                        using (SqlDataReader reader = cmd.ExecuteReader())                        {                            if (reader.Read())                            {                                MessageBox.Show("数据库中已有此卡信息,无法添加");                                return; //有重复就退出不处理                            }                        }                    }                    //插入                    string cmd_add = String.Format("insert into tb_card(cardID,userName,cardType) values ({0},{1},{2})",                        "/'" + tb_id.Text.Trim() + "/'", "N/'" + tb_name.Text.Trim() + "/'", "/'" + tb_type.Text.Trim() + "/'");                    using (cmd = new SqlCommand(cmd_add, con))                    {                        if (cmd.ExecuteNonQuery() != -1)                        {                            MessageBox.Show("添加成功");                        }                    }                }                catch (Exception ex)                {                    MessageBox.Show("添加失败,详细信息:" + ex.ToString());                }            }            else            {                MessageBox.Show("信息不得为空");            }            closeCon();        }         #endregion

       

  3.       改
    1.   检测是否存在id,若存在则修改,不存在则告知用户
    2.         #region btn_更新        private void btn_update_Click(object sender, RoutedEventArgs e)        {            openCon();            if (tb_id.Text.Trim() != "" && tb_name.Text.Trim() != "" && tb_type.Text.Trim() != "")            {                try                {                    //查询id是否存在                    string cmd_check = "select userName,cardType from tb_card where cardID='" + tb_id.Text.Trim() + "'";                    using (cmd = new SqlCommand(cmd_check, con))                    {                        using (SqlDataReader reader = cmd.ExecuteReader())                        {                            if (!reader.Read())                            {                                MessageBox.Show("数据库中没有此卡信息,无法修改");                                return;                            }                        }                    }                    string cmd_update = String.Format("update tb_card set userName={0},cardType={1} where cardID={2}",                            "N/'" + tb_name.Text.Trim() + "/'", "/'" + tb_type.Text.Trim() + "/'", "/'" + tb_id.Text.Trim() + "/'");                    using (cmd = new SqlCommand(cmd_update, con))                    {                        if(cmd.ExecuteNonQuery()!=-1){                            MessageBox.Show("更新成功");                        }                    }                }                catch (Exception ex)                {                    MessageBox.Show("更新失败,详细信息:" + ex.ToString());                }            }            else            {                MessageBox.Show("信息不得为空");            }            closeCon();        }         #endregion

       

  4.       删
    1.   检测id是否存在,存在则删除该行,不存在则告知用户
    2.         #region btn_删除        private void btn_delete_Click(object sender, RoutedEventArgs e)        {            openCon();            if (tb_id.Text.Trim().Length != 0)            {                try                {                    string cmd_check = "select * from tb_card where cardID='" + tb_id.Text.Trim() + "'";                    using (cmd = new SqlCommand(cmd_check, con))                    {                        using (SqlDataReader reader = cmd.ExecuteReader())                        {                            if (!reader.Read())                            {                                MessageBox.Show("数据库中没有此卡信息,无法删除");                                return;                            }                        }                    }                    string cmd_delete = "delete from tb_card where cardID='" + tb_id.Text.Trim() + "'";                    using (cmd = new SqlCommand(cmd_delete, con))                    {                        if (cmd.ExecuteNonQuery() != -1)                        {                            MessageBox.Show("删除成功");                        }                    }                }                catch (Exception ex)                {                    MessageBox.Show("删除失败,详细信息:" + ex.ToString());                }            }            else {                MessageBox.Show("id不得为空");            }            closeCon();        }         #endregion

       

大家最喜欢的直接上代码上完了,再说说我遇到的几个坑:

  第一个就是一开始不知道为什么只能添加数字,连英文字母都不能添加,后来经过查看代码中的sql命令发现是在有英文的地方没有加上''将其包围起来;

  第二个就是每次中文添加之后就乱码,后来知道有nvarchar这种东西,然后再再添加中文的地方之前加个N,例如:七喜--》N'七喜',这样就搞定了

  第三个就是cmd命令的执行,我一开始无论增删改查都用ExecuteReader,但是觉得怪怪的,最后看stackoverflow的大神的答案和官方文档才知道一般增删改都用ExecuteNonQuery

最后发几条学习过程中参考的链接:

  http://www.VEVb.com/mr-wid/archive/2013/05/09/3068229.html  21分钟 MySQL 入门教程

  https://msdn.microsoft.com/en-us/library/ms187752.aspx       微软的数据库类型参考

  http://www.vevb.com.cn/sql/sql_datatypes.asp           w3c的各种数据库类型参考

  http://stackoverflow.com/questions/5349114/executenonquery     stackoverflow关于executenonquery使用

有神马地方说错或者有神马意见欢迎提出谢谢


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表