ADO.NET——Command(执行SQL) & DataReader(读取数据库)

一,关于两个对象的基础知识

1,Command

Command对象主要用于对数据源执行SQL命令并返回结果。

ADO.NET提供了Connection来连接数据库,同时也提供了Command对象来查询数据库。同Connection对象一样,Command也有两种:OleDbCommand和SqlCommand.其区别同Connection对象。

Command对象有一个属性:CommandType(sql语句或者存储过程);三个重要方法:ExecuteNonQuery(增、删、改影响的行数)、ExecuteReader(返回DataReader对象类型)ExecuteScalar(返回结果集的第一行第一列值).

2,DataReader

而DataReader对象不能直接实例化,必须通过Command对象中的一个方法来创建。

所以,在使用这两个对象时,可以把他们连起来使用。首先,我们用Connection连接数据库,然后用Command执行数据库命令,最后将执行的结果传递给DataReader.

二,示例

例如:

static void Main(string[] args)
        {
            //创建连接
            string strConn = "database=Login;server=localhost;UID=sa;PWD=123456";  //连接字符串

            using (SqlConnection conn = new SqlConnection(strConn)) //建立连接,并且当连接使用完后自动关闭
            {
                conn.Open();  //打开连接

                //查询
                string strSQL = "select * from Users where [email protected]";
                SqlCommand cmd = new SqlCommand(strSQL, conn);

                //添加参数
                string userid = "1";   //查询用户ID=1的用户
                cmd.Parameters.AddWithValue("@UserID", userid);  //参数的赋值

                //执行查询,保存结果
                SqlDataReader reader = cmd.ExecuteReader();  //将查询结果保存在reader里面

                //显示查询结果

                if (reader.HasRows)   //如果查到的结果不为空
                {
                    while (reader.Read())   //读取每条,逐条显示
                    {
                        Console.WriteLine("ID是:{0};UserName是:{1}", reader["ID"], reader["UserName"]);
                    }
                }
                else   //没有查询结果时候
                {
                    Console.WriteLine("没有查到结果");
                }
            }

            //conn.Close();  //关闭连接

        }

以上例子包含了Command的参数化查询过程和DataReader的基本使用,再加上connection对象,基本可以完成对数据库的读操作。

未完待续。。。

时间: 2024-10-07 07:39:44

ADO.NET——Command(执行SQL) & DataReader(读取数据库)的相关文章

Gradle实战:执行sql操作hive数据库

查看原文:http://blog.csdn.net/u010818425/article/details/52490628 Gradle实战系列文章: <Gradle基本知识点与常用配置> <Gradle实战:Android多渠道打包方案汇总> <Gradle实战:不同编译类型的包同设备共存> <Gradle实战:发布aar包到maven仓库> 本文将介绍使用groovy+sql的脚本,实现从hive抓取数据,为方便理解,重要语句有详细注释,关键处已标明“关

批处理--执行sql(mysql数据库)

@echo off rem test.sql文件 for %%i in (test.sql) do ( echo excute %%i mysql -u用户名 -p密码 -D数据库名 < %%i ) echo success pause 批处理--执行sql(mysql数据库),布布扣,bubuko.com

ADO.NET链接执行SQL的小白思路

ado.net 主要就是访问数据源  数据源就是数据库和数据库里面的东西针对不同的数据库ADO.NET会使用不同的方式去链接 ADO首先链接数据库 然后执行增删改查 关闭 清理资源 引入命名空间----找到数据库(链接字符串)----实例化链接的对象 ------connection对象去建立连接-------打开链接 -------command命令对象,执行SQL.关闭 过程 1:引入命名空间using System .data . SqlClient; 2: 链接服务器/数据库/--登陆

mysql数据库批量执行sql文件对数据库进行操作【windows版本】

起因: 因工作需要,在本机测试环境升级mysql数据库,需逐条执行mysql数据库的sql文件对数据库进行升级,因此找了些关于mysql的文章,对批量升级数据库所需的sql文件进行升级. 整理思路: 首先,需要对所需升级的sql所在目录的sql文件进行遍历.生成新的批量执行sql文件.想到是windows系统安装的mysql,首先想到使用bat进行sql文件的生成: 生成sql文件后,还需要使用bat文件连接到数据库,并使用新生成的sql文件进行升级. 想到升级的过程中还有可能字符集出现问题,因

读取数据库数据填充到缓存的问题,及修复方案一则

业务简述: 为了提高站点性能,部署了一台Redis,把资源从SqlServer数据库中同步到Redis,站点由原来的读取数据库,变更为读取Redis,以利用Redis的高并发提升站点性能目的. 环境说明: 1.假设表名为softs, 记录的更新时间字段名为 updateTime: 2.不考虑数据库的DELETE操作,只考虑INSERT和UPDATE操作: 3.流程中所有时间,都以数据库时间为准,以避免不同服务器之间的时间误差,导致数据遗漏. 4.重要的前提条件:数据库执行INSERT和UPDAT

循环中读取数据库、嵌套循环引起的性能问题

背景说明 K/3 Cloud的代码开发规范,严格禁止在循环中到数据库读取数据,这会引发严重的性能问题: 需在循环外,一次性取回需要的数据. 但对于提前取回的数据,如果没有预先处理,常常需要嵌套一个循环到集合中取数,这也是非常严重的性能问题. 本帖将通过一个案例,编写三套实现方法,演示循环取数,典型的错误方案与推荐方案. 案例说明 需求: 生成销售出库单时,自动检查库存,从有存货的仓库出库. 实现方案: 编写单据转换插件,物料.数量携带完毕后,到数据库取有存货的仓库,填写到仓库字段中: 如果某一个

读取数据库数据,并将数据整合成3D饼图在jsp中显示

首先我将生成饼图的方法独立写成一个PieChar.java类,详细代码如下:(数据库需要自己建,如有需要的话) 1 import java.io.IOException; 2 import java.sql.SQLException; 3 import org.jfree.chart.ChartFactory; 4 import org.jfree.chart.JFreeChart; 5 import org.jfree.data.general.DefaultPieDataset; 6 7 p

原生的ado.net(访问sql server数据库)

本文介绍原生的ado.net(访问sql server数据库) 写在前面 数据库连接字符串 过时的写法 string str = "server=localhost;database=my_db;uid=sa;pwd=123"; 主流的写法 sql验证写法 string str = "Data Source=localhost;Initial Catalog=my_db;User ID=sa;Password=123"; windows验证写法 string str

利用PHP执行SQL文件,将SQL文件导入到数据库

如何利用php自动执行.sql文件.其实很简单,就是获取sql文件中的内容,然后将每一句sql语句一次执行就行啦. 这是代码 //读取文件内容 $_sql = file_get_contents('test.sql'); $_arr = explode(';', $_sql); $_mysqli = new mysqli(DB_HOST,DB_USER,DB_PASS); if (mysqli_connect_errno()) { exit('连接数据库出错'); } //执行sql语句 for