前面一篇文章,我们介绍了如何在c#中对数据库进行更新操作。主要是利用SqlCommand 对象的ExecuteNonQuery方法。

这篇文章介绍,如何进行查询操作。本文给出的例子仍然是针对sql server数据库的。对于其它数据库(源),区别只是引入的部门api的不同,但流程和方法是一样的。

一、查询单个值

SqlCommand 对象提供了一个ExecuteScalar方法,它的作用是返回查询结果中第一条记录中的第一列的值。如果查询结果没有记录,则返回的值为null。

该方法往往用于检查数据是否存在。

我们还是看例子:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms; namespace DbExample
{
class DbActor
{ public void querySingleValue()
{
SqlConnection conn = getConnection();
try
{
conn.Open();
SqlCommand command = new SqlCommand("select count(*) from userinfo", conn);
int value = (int)command.ExecuteScalar();
MessageBox.Show(value.ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
} private SqlConnection getConnection()
{
string strConnection = @"Data Source = localhost\SQLEXPRESS; Initial Catalog = mydb; User Id = sa; Password = Xqh980234;";
SqlConnection conn = new SqlConnection(strConnection);
return conn;
}
}
}

二、遍历所有记录

在大部分场景下,我们需要获取查询结果的所有数据。这个需要用到c#的DataReader对象。我们看一个例子:

        public void query()
{
SqlConnection conn = getConnection();
SqlDataReader reader = null;
try
{
conn.Open();
SqlCommand command = new SqlCommand("select * from userinfo", conn);
reader = command.ExecuteReader();
while (reader.Read())
{
string result = reader.GetString() + "," + reader.GetString();
MessageBox.Show(result);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (reader!=null)
reader.Close();
conn.Close();
}
}

对于查询操作,基本上就是上面标准的格式,需要注意的地方是:
1)获取字段是,序号是从0开始的(0代表第一个字段)。有的开发语言的api(如java)是从1开始的。

2)最后的SqlDataReader对象不要忘了关闭。不要要放到try语句的最后,要放到finally语句中,防止放在try最后但处理过程中出现异常而无法被调用。

3)如果主需要取一条记录,把while改成if语句即可。

本篇文章介绍了,如何在c#中进行数据库查询操作,结合上篇文章对更新操作的介绍,基本上可以满足大部分场景的开发。当然只是介绍最基本的使用方法和流程。还有一些细节的API需要自己去了解。在下面的文章中,我们将继续介绍如何使用DataSet对象来访问数据库。

c# 数据库编程(通过SqlCommand 执行数据库查询)的更多相关文章

  1. 数据库学习任务三:执行数据库操作命令对象SqlCommand

    数据库应用程序的开发流程一般主要分为以下几个步骤: 创建数据库 使用Connection对象连接数据库 使用Command对象对数据源执行SQL命令并返回数据 使用DataReader和DataSet ...

  2. JAVA数据库编程、JAVA XML解析技术

    JDBC概述 JDBC是JAVA中提供的数据库编程API curd :数据库增删改 链接字符串:String url = "mysql :/localhost :3306/jdbc/&quo ...

  3. 七,JOBC数据库编程

    七,JOBC数据库编程 七,JOBC数据库编程 一,java数据库编程步骤 1,将数据库驱动包考入lib目录: 2,加载驱动--整个操作数据库程序运行期间只需要加载一次 Class.forName(& ...

  4. Vc数据库编程基础MySql数据库的表查询功能

    Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...

  5. Android Sqlite数据库执行插入查询更新删除的操作对比

    下面是在Android4.0上,利用Sqlite数据库的insert,query,update,delete函数以及execSql,rawQuery函数执行插入,查询,更新,删除操作花费时间的对比结果 ...

  6. 吴裕雄--天生自然JAVA数据库编程:执行数据库更新操作

    import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.Statement ; public clas ...

  7. Oracle数据库定时任务配置和日志执行情况查询

    基础配置: /***************************************************************** * * 移动抵扣券快到期推送提醒 * 首次执行 : 2 ...

  8. ADO.NET数据库编程

    ADO.NET数据库编程 1.ADO.NET的相关概念. Microsoft的新一代技术,是ADO组件的后继者. 主要目的是在.NET Framework平台存取数据. 提供一致的对象模型,可以存取和 ...

  9. 提高你的数据库编程效率:Microsoft CLR Via Sql Server

    你还在为数据库编程而抓狂吗?那些恶心的脚本拼接,低效的脚本调试的日子将会与我们越来越远啦.现在我们能用支持.NET的语言来开发数据库中的对象,如:存储过程,函数,触发器,集合函数已及复杂的类型.看到这 ...

随机推荐

  1. perl5 第八章 子程序

    第八章 子程序 by flamephoenix 一.定义二.调用  1.用&调用  2.先定义后调用  3.前向引用  4.用do调用三.返回值四.局部变量五.子程序参数传递  1.形式  2 ...

  2. CentOS 6.4下Squid代理服务器的安装与配置,反向代理

    CentOS 6.4下Squid代理服务器的安装与配置 一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件 ...

  3. poj 2593 Max Sequence(线性dp)

    题目链接:http://poj.org/problem?id=2593 思路分析:该问题为求给定由N个整数组成的序列,要求确定序列A的2个不相交子段,使这m个子段的最大连续子段和的和最大. 该问题与p ...

  4. 从一个App跳转到另一个App

    在跳入App的info中配置Bundle identifier 在跳入App的info中配置URL Schemes 在另一个应用程序中按照上边的操作添加openURL并运行,就可以跳转了 调用open ...

  5. golang实现tcp接入服务器

    接入服务器和后端业务服务其维持tcp连接,多个前端请求通过接入服务器访问后端业务服务器,接入服务器可以方便增加路由功能,维护多个业务服务器,根据消息ID路由到具体的业务服务器. 项目目录如下 simp ...

  6. c 计算Fibonacci数列:1,1,2,3,5,8,13……这题也是很经典。

    输出数字序列2/,/,/,/,/,/...,输出个数由键盘输入.注意输入使用scanf输入 比如: 输入 3输出为 / / / 输入 输出为 / / / / #include<stdio.h&g ...

  7. 关于css里的class和id

    id 是唯一的 权重100 相当于身份证 只能有一张. class 可以多个元素都拥有 权重10 就相当于电影票 你有我也有. 用法如下 <divid="box">变颜 ...

  8. 新到的Mac配置Java开发环境

    今天Mac到手,需要配置一些用到的开发环境,在这里做一些纪录. 1. 下载Eclipse,地址:http://www.eclipse.org/downloads/,因为个人需求,所以下载的是Java ...

  9. 如何查看程序被哪个版本编译器编译的linux-gcc

    如何查看程序被哪个版本编译器编译的linux-gcc http://bbs.csdn.net/topics/380000949 那是不可能的,除非你加入了调试信息,也就是编译的时候加入了-g参数,然后 ...

  10. 用jmeter进行多用户并发压力测试 [转]

    近日manager要求对项目进行压力测试,开始对jmeter进行了研究.jmeter是Apache一个开源项目,可对各种项目进行测试,甚至包括junit. 测试要求如下,多用户同时登陆web应用程序, ...