学习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. Geodatabase - 判断是否处于编辑状态

    Engine中提供IDatasetEdit来判断数据是否处于编辑状态,我们知道,在ArcMap中,进行编辑的不一定都是要素类,也可以是表,网络几何等.以下能在ArcMap中进行编辑的数据都实现了 ID ...

  2. C++智能指针初学小结

    本篇随笔仅作为个人学习<C++ Primer>智能指针一节后的部分小结,抄书严重,伴随个人理解.主要介绍shared_ptr.make_shared.weak_ptr的用法和联系. C++ ...

  3. JMS-activeMQ

    参考资料: http://yuxisanren.iteye.com/blog/1912587 .JMS简介:JMS即Java Message Service,是Java 程序创建.发送.接收和读取企业 ...

  4. Freemarker日期函数处理【转】

    Freemarker日期函数处理[转] (2012-08-01 14:32:13) 转载▼ 标签: 杂谈   string(当和一个日期值一起使用) 这个内置标签用指定的格式把日期转换成字符串,(把默 ...

  5. LESSCSS

    LESSCSS应需求而生 CSS 的语法相对简单,对使用者的要求较低,但同时也带来一些问题:CSS 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往往会因 ...

  6. Ubuntu下给Sublime Text 3添加用python3运行文件

    Ubuntu14.04: 菜单栏:Tools-Build System-New Build System { "cmd": ["python3", " ...

  7. python yield 理解

    在别人的代码中看到yield这个关键字,看了几篇资料,说一下个人理解. 包含yield 关键字的函数成为一个迭代器,yield跟return的位置一样,只不过每次返回结果后,并没有退出,而是等待下一次 ...

  8. c# 高效分页只需一个dll实例

    第一.首先下载WebUIControl.dll http://pan.baidu.com/s/1gdkilDh 第二.添加引用 三.应用实例-前台代码 <%@ Register Assembly ...

  9. awk的接口实现方案1

    module/a.awk function sum(a, b) { return a + b } module/b.awk function sum(a, b) { return a * b } ma ...

  10. Android 代码编辑器中实现代码语法高亮

    想写一款Android手机上的代码编辑器,实现类似c4droid中代码语法高亮 通过Android中的控件WebView中嵌入html网页,html引入CodeMirror这个第三方库就可以了,其实就 ...