学习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. cocos2dx Menu

    ---恢复内容开始--- cocos2dx 3.0以后 Menu相关回调函数使用不同.现在列出当前版本可使用的方法. 看见一个说的很仔细的博客,博客源地址 http://blog.sina.com.c ...

  2. dwz笔记之tree权限扩展

    碰到的问题:tree选择子节点时,父级节点的值没有选择 解决方法如下(红色部分): 原代码: _checkParent:function(){ if($(this).parent().hasClass ...

  3. 03--理解HelloWorld结构

    作为程序猿还是要代码来说事的,现在开始进入到具体的代码中来.国际惯例HelloWorld打头阵,我也不能免这个俗. Win32入口函数中主要代码如下: main.cpp // 创建应用实例 AppDe ...

  4. web.config 拆分

    <appSettings configSource="xxx.config"> </appSettings> 在 web.config 加入上面  然后创建 ...

  5. ecstore后台规格超过一定数量保存丢失

    问题描述: 后台规格超过一定数量保存丢失,规格新增不了,删除出问题等不正常情况. 解决方法: 经过波波的不懈努力和日夜冥想终于破了.分析其原因就是因为多个规格组合生成的表单域太多,与php.ini配置 ...

  6. IOS响应式编程框架ReactiveCocoa(RAC)使用示例-备

    ReactiveCocoa是响应式编程(FRP)在IOS中的一个实现框架,它的开源地址为:https://github.com/ReactiveCocoa/ReactiveCocoa# :在网上看了几 ...

  7. [POJ] 2785 4 Values whose Sum is 0(双向搜索)

    题目地址:http://poj.org/problem?id=2785 #include<cstdio> #include<iostream> #include<stri ...

  8. abiword rtf 解析

    目前为止,代码跟进,知道是这个地方进行文件解析的 T_Error IE_Imp_RTF::importFile(const char * szFilename)

  9. HDU 4010 Query on The Trees(动态树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4010 题意:一棵树,四种操作: (1)若x和y不在一棵树上,将x和y连边: (2)若x和y在一棵树上, ...

  10. Non-unique Elements

    Non-unique Elements You are given a non-empty list of integers (X). For this task, you should return ...