学习ADO,免不了要跟数据库打交道,对于初学者来说,如果不整理一下整个流程,那么可能会出现很多的问题,下面简单的介绍数据库的操作流程。

1.     我们最终操作的对像是数据表,在操作数据表之前我们先要明确我们要操作的数据库,因为只有先连接了数据库才能进入数据库操作里面存储的表。

所以才有以下连接数据库的代码:

     string connString = "Data Source=.;Initial Catalog=MySchool;Integrated Security=True";

     server=.\sqlexpress; database=myschool;User id=sa; Pwd=*****    --数据库连接字符串

     server=.\sqlexpress; database=myschool;Uid=sa; password=*****

     数据库连接 Connection 对象,连接通道

     SqlConnection connection = new SqlConnection(connString);

     数据库连接建立后需要将连接打开才能真正实现数据库的连接,否则连接语句仅仅是一个语句而已,不能起到任何作用。所以才需要以下代码:

      connection.Open();  -- 打开连接

2.     当我们成功连接上数据库之后我们需要做什么事情呢?

我们知道,操作数据库可以使用SQL语句,SQL语句就是用来做数据库的增加,删除,修改,查询操作的。所以我们需要定义一个SQL语句告诉电脑应该做什么样的事情。所以才有以下语句:如

string sql = string.Format("SELECT count(*) FROM Admin WHERE LogInId='{0}' AND LogInPwd='{1}'", loginId, loginPwd );   ExcuteScalar  ExcuteNonQuery()

if(num!=0)

{

}

3.     当我成功连接上数据库,也写好的SQL语句就行了吗?

当然不行,因为我们如果不去执行SQL语句,那它也仅仅是一个语句而已,就像我们在SQL SERVER里面写了SQL语句而不是去执行一下不能起到任何作用。所以我们需要一个命令对像来“执行”SQL语句,这个命令对像就是SqlCommand对像,它是一个系统对像,我们要使用它必须先实例化出一个新的对像,所以才有以下代码:

SqlCommand command = new SqlCommand(sql, connection);//command是实例化对像的名称,sql是说明需要执行的SQL语句, connection是说明如何连接数据库

Command.CommandText=sql;

Command.Connection=connection;

4.有了command对像还不够了,因为他也仅仅是一个对像,要它起作用还需要调用它的相应的方法,就是“对像.方法”。具体方法如下:

A:如果是要做查询,就是说找到我想得到具体的数据的值(不是符合条件的个数, 不是聚合函数,也不是单个值),那就使用SqlCommandExecuteReader()方法返回一个SqlDataReader对象,这个对象的Read()方法一次可以返回一行的值,这一行的值由SQL语句的select来决定,select后面查询的字段越多,那么这个方法得到的值就越多,也就是说返回的这一行的数据就越多!

B:如果对数据做增加,删除,修改,那就要调用SqlCommandExecuteNonQuery()方法,这个方法可以执行某个操作,同时返回受影响和行数。到底什么操作呢?这和你的SQL语句是有关的。SQL语句写了增加,那它就执行增加。如果写了删除,那它就执行删除。如果不是增加删除和修改就返回-1

C:如果只是返回满足条件的个数或者返回第一行第一列的值,那一般就会使用SqlCommandExecuteScalar()方法,例如SQL语句里面写了聚合函数等。它的返回类型是object,需要做强制类型转换,因为有可能将object转换为其它类型,所以一般使用Convert进行转换。(数据库中的所有数据都是值类型,所以读取过来后需要做装箱,在做拆箱只能拆到原始的数据类型

5.那么我们如何知道这个操作被成功的执行了呢?

这个时候我们需要方法给我们返回相应的值,ExecuteScalar()返回单个值,如聚合函数或者单列的一个值,这个值的类型是object,需要做强制的类型转换,ExecuteNonQuery()返回受影响的行数,它们都可以是一个整型值,所以我们经常看到这样的代码:

count = (int)command.ExecuteScalar();  --- 执行查询语句

但是ExecuteReader()返回多个值,所以我们需要使用循环去做接收,一般是将读取出来的值赋给相应的字符串变量,或者放到相关控件里面做显示,所以我们可能看到这样的代码:

  while (dataReader.Read())

                { 

gradeName = (string)dataReader[0];  --将值赋值给一个变量

                }

6.对于ExecuteScalar()和ExecuteNonQuery()接下来我们就可以对方法返回的值做一个判断了,所以经常看到这样的代码:

if (result== 1)  @@rowcount

     {

          MessageBox.Show("添加成功!”);

      }                    

else

    {

         MessageBox.Show("添加失败!");

    }

      

 7、还有平时我们经常会接触都应用程序跟数据库进行交换,那么我们可以用一个简单的图来说明应用程序是怎么跟数据库打交道的:

               

       以上的图清晰的展示了五大对象各施其职和他们之间的关系,如果有什么问题可以联系我!

SQL Server数据库的操作流程和连接的简单介绍的更多相关文章

  1. Windows 2008服务器环境PHP连接SQL Server数据库的配置及连接方法

    背景: PHP程序常用的数据库是Mysql数据库,但是由于实际项目需要,要求PHP网站连接SQL Server数据库查询一些必要信息.因此,本文就来给大家介绍一下如何安装及配置PHP扩展,可以实现PH ...

  2. 修改SQL Server数据库表的创建时间最简单最直接有效的方法

    说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,因为这种操作方式是通用的,即使是对现在最新的SQL Server数据库里面的操作也是一 ...

  3. 在Navicat premium上创建的SQL Server数据库,实现用PHP连接(即php连接微软MSSQL)

    用 freetds 或 dblib的方式连接sql server 在windows下使用FreeTDS 什么是FreeTDS? FreeTDS其实就是一个开源(或者可以说成自由)的C程序库,它可以实现 ...

  4. SQL Server 索引(index) 和 视图(view) 的简单介绍和操作

    --索引(index)和视图(view)-- --索引(index)----概述: 数据库中的索引类似于书籍的目录,他以指针形式包含了表中一列或几列组合的新顺序,实现表中数据库的逻辑排序.索引创建在数 ...

  5. sql server中关于批处理与脚本的简单介绍

    1.批处理 批处理指的是包含一条或多条T-SQL语句的语句组,这组语句从应用程序一次性地发送到SQL Server服务器执行.SQL Server服务器将批处理语句编译成一个可执行单元(即执行计划), ...

  6. sql server 数据库还原后sa连接不上原因

    手动创建了一个同名数据库,然后还原以前或者别人的备份,还原虽然成功了,但是在VS中连接不上,原因可能是: 数据库的所有者中没有添加sa,方法即在数据库名上右击,然后选择文件,在所有者中添加上sa,应该 ...

  7. 用ASP.NET/C#连接Access和SQL Server数据库

    连接Access 首先看一个例子代码片断:程序代码: ------------------------------------------------------------------------- ...

  8. Excel表数据导入Sql Server数据库中

    Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nv ...

  9. SQL Server数据库存储过程的异常处理

    SQL Server数据库存储过程的异常处理是非常重要的,明确的异常提示能够帮助我们快速地找到问题的根源,节省很多时间.本文我们就以一个插入数据为例来说明SQL Server中的存储过程怎么捕获异常的 ...

随机推荐

  1. Linux 下安装oracle数据库

    原文出处       http://www.linuxidc.com/Linux/2015-02/113222.html 需要安装Oracle DataGuard,所以先要安装单台Oracle11g, ...

  2. iOS RGB颜色封装

    使用类别创建 .h文件 #import <UIKit/UIKit.h> @interface UIColor (HexColor) + (UIColor *)colorWithHex:(N ...

  3. Sql 函数大全 (更新中...由难到简

    1.字符处理类: 1.1 指定指定字符输出的次数 ) 结果:1a1a1a1a1a (5个1a)

  4. Lua 字符串函数小结

    1.求字符串长度 string.len(str) 2.大小写转换 string.upper(str) string.lower(str) 3.字符串查找(非全局) --func_string.lua ...

  5. 网上查了点关于windows注册表的知识,发现基本名词没理解好,于是整理这篇笔记(可能个别地方不准确,先这么理解吧),有了这个理解,再去看网上的文章,就差不读了

    打开注册表编辑器,左边窗格中显示的是“注册表项”,右边窗格中显示的是“注册表项的项值” 子项:子项是相对父项而言的,在某一个项(父项)下面出现的项(子项) 值项:一个项可以有一个或多个项值,当前被使用 ...

  6. python学习视频整理

    python3英文视频教程(全87集) http://pan.baidu.com/s/1dDnGBvV python从入门到精通视频(全60集)链接:http://pan.baidu.com/s/1e ...

  7. Oracle instr用法

    1:实现indexOf功能,.从第1个字符开始,搜索第1次出现子串的位置 ,) as i from dual; select instr('oracle','or') as i from dual; ...

  8. EF 一对一,一对多,多对多 Flunt API 配置

       一对一 就拿后台用户权限相关的实体来说明吧,用户表,用户详细表,是一对一的关系: /// <summary> /// 用户信息类 /// </summary> publi ...

  9. DEVExpress For WPF 中GridControl如何实现滚动分页(延迟查询)

    在显示大量数据时一般采用分页显示,但是最近用户需要滚动显示,那么问题来了,滚动显示要求将数据全部查询回来,这显然会导致显示速度很慢. 好在想到一种方式,就是当用户滚动鼓动条的时候再查询下面的数据.好吧 ...

  10. 【转】Linux下Android ADB驱动安装详解

    原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比 ...