前一篇 http://www.cnblogs.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();
      tb_type.Text = reader.GetString();
      }
      else
      {
      MessageBox.Show("查询失败");
      }
      }
      }
      }
      else
      {
      MessageBox.Show("id输入框不得为空");
      }
      closeCon();
      }
      #endregion
    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() != -)
      {
      MessageBox.Show("添加成功");
      }
      }
      }
      catch (Exception ex)
      {
      MessageBox.Show("添加失败,详细信息:" + ex.ToString());
      }
      }
      else
      {
      MessageBox.Show("信息不得为空");
      }
      closeCon();
      }
      #endregion
    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()!=-){
      MessageBox.Show("更新成功");
      }
      }
      }
      catch (Exception ex)
      {
      MessageBox.Show("更新失败,详细信息:" + ex.ToString());
      }
      }
      else
      {
      MessageBox.Show("信息不得为空");
      }
      closeCon();
      }
      #endregion
    1.   检测id是否存在,存在则删除该行,不存在则告知用户
    2.         #region btn_删除
      private void btn_delete_Click(object sender, RoutedEventArgs e)
      {
      openCon();
      if (tb_id.Text.Trim().Length != )
      {
      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() != -)
      {
      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.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html  21分钟 MySQL 入门教程

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

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

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

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

VisualStudio2013内置SQLServer入门(二)--增删改查的更多相关文章

  1. VisualStudio2013内置SQLServer入门

    最近做项目老大要求用到sqlserver,但是这项目的数据库只是本地演示用并不复杂,于是决定试试VisualStudio2013内置的SQLServer.对于这个东西的了解并没有多少,然后项目初学习的 ...

  2. mybatis入门(二):增删改查

    mybatis的原理: 1.mybatis是一个持久层框架,是apache下的顶级项目 mybatis托管到googlecode下,目前托管到了github下面 2.mybatis可以将向prepar ...

  3. mybatis入门二-----增删改查

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...

  4. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

  5. Mybatis入门之增删改查

    Mybatis入门之增删改查 Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了.(增删改都要添加)----- 浪费了我40多分钟怀疑人生后来去百度... 导入包: 引入配置文件: sq ...

  6. Redis入门之增删改查等常用命令总结

    Redis是用C语言实现的,一般来说C语言实现的程序"距离"操作系统更近,执行速度相对会更快. Redis使用了单线程架构,预防了多线程可能产生的竞争问题. 作者对于Redis源代 ...

  7. Hibernate入门_增删改查

    一.Hibernate入门案例剖析:  ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private ...

  8. MyBatis入门2_增删改查+数据库字段和实体字段不一致情况

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 当数据库字段和实体bean中属性不一致时 之前数据库P ...

  9. JDBC【1】-- 入门之增删改查

    目录 1.jdbc是什么 2.使用IDEA开发 2.1 创建数据库,数据表 2.2 使用IDEA创建项目 1.jdbc是什么 JDBC(Java DataBase Connectivity,java数 ...

随机推荐

  1. bzoj2002

    这道题学习了一种简洁的解决一些数据结构题的方法——分块法这道题方法很多,但分块写起来只有1kb左右,非常的简洁(但不是非常的高效)首先很容易思考到一种暴力的做法,从后往前推,很容易搞出每个点会弹几次弹 ...

  2. PuTTY DSA签名远程缓冲区溢出漏洞(CVE-2013-4207)

    漏洞版本: Simon Tatham PuTTY 0.52 - 0.63 漏洞描述: BUGTRAQ ID: 61649 CVE(CAN) ID: CVE-2013-4207 PuTTY是Window ...

  3. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)

    卷 backup 的文件夹 PATH 列表卷序列号为 00000025 D4A8:14B0J:.│  1.txt│  c语言经典案例效果图示.doc│  ├─1传智播客_尹成_C语言从菜鸟到高手_第一 ...

  4. 【转】Linux下svn的常用工作流程

    原文网址:http://www.cnblogs.com/cobbliu/archive/2011/07/08/2389011.html 上篇文章在ubuntu和redhat5.5上搭建好了svnser ...

  5. NDK的安装和下载

    从官网下载NDK 下载页面:https://developer.android.com/ndk/downloads/index.html 从镜像站点下载NDK "大师兄"是一个由腾 ...

  6. 折腾iPhone的生活——AirDrop的使用

    AirDrop是iOS一个非常大的亮点,其实说是这么说了,但是事实上AirDrop并没有想象中那么好用. AirDrop就是一个用于无线传输文件的方式,实质性跟蓝牙没有太大区别,但是比蓝牙好用,有点像 ...

  7. 最常用的 Eclipse 快捷键总结

    本文是一些最实用.最齐全.最省时间的 Eclipse 快捷键总结,这些快捷键可以让帮助你完成工作中的任何一个操作.欢迎参考. 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间 ...

  8. Broken line - SGU 124(判断点与多边形的关系)

    题目大意:RT 分析:构造一条射线,如果穿越偶数条边,那么就在多边形外面,如果穿越奇数条边,那么就在多边形里面. 代码如下: ===================================== ...

  9. wikioi 1154 能量项链 (2006年NOIP全国联赛提高组)

    题目描述 Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子 ...

  10. C#开发学习——ADO.NET几个重要对象

    ADO.NET包括多个对象模型,有Connection/Command/DataReader/DataAdapter/DataSet/DataTable/DataView等. 命名空间System.D ...