c# 数据库编程(通过SqlCommand 执行数据库查询)
前面一篇文章,我们介绍了如何在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 执行数据库查询)的更多相关文章
- 数据库学习任务三:执行数据库操作命令对象SqlCommand
数据库应用程序的开发流程一般主要分为以下几个步骤: 创建数据库 使用Connection对象连接数据库 使用Command对象对数据源执行SQL命令并返回数据 使用DataReader和DataSet ...
- JAVA数据库编程、JAVA XML解析技术
JDBC概述 JDBC是JAVA中提供的数据库编程API curd :数据库增删改 链接字符串:String url = "mysql :/localhost :3306/jdbc/&quo ...
- 七,JOBC数据库编程
七,JOBC数据库编程 七,JOBC数据库编程 一,java数据库编程步骤 1,将数据库驱动包考入lib目录: 2,加载驱动--整个操作数据库程序运行期间只需要加载一次 Class.forName(& ...
- Vc数据库编程基础MySql数据库的表查询功能
Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...
- Android Sqlite数据库执行插入查询更新删除的操作对比
下面是在Android4.0上,利用Sqlite数据库的insert,query,update,delete函数以及execSql,rawQuery函数执行插入,查询,更新,删除操作花费时间的对比结果 ...
- 吴裕雄--天生自然JAVA数据库编程:执行数据库更新操作
import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.Statement ; public clas ...
- Oracle数据库定时任务配置和日志执行情况查询
基础配置: /***************************************************************** * * 移动抵扣券快到期推送提醒 * 首次执行 : 2 ...
- ADO.NET数据库编程
ADO.NET数据库编程 1.ADO.NET的相关概念. Microsoft的新一代技术,是ADO组件的后继者. 主要目的是在.NET Framework平台存取数据. 提供一致的对象模型,可以存取和 ...
- 提高你的数据库编程效率:Microsoft CLR Via Sql Server
你还在为数据库编程而抓狂吗?那些恶心的脚本拼接,低效的脚本调试的日子将会与我们越来越远啦.现在我们能用支持.NET的语言来开发数据库中的对象,如:存储过程,函数,触发器,集合函数已及复杂的类型.看到这 ...
随机推荐
- (IOS)关于Xcode的架构(Architectures)设置
首先来了解一下Architectures中几个参数的含义 ARMv6:ARM11内核用于iPhone2G和iPhone3G中的架构 ARMv7:modern ARM内核用于iPhone3GS和iPho ...
- ISO/IEC 14443协议浅谈
一. 非接触IC卡简介 非接触IC卡又称射频卡,是射频识别技术和IC卡技术有机结合的产物.它解决了无源(卡中无电源)和免接触这一难题,具有更加方便.快捷的特点,广泛用于电子支付.通道控制.公交收费.停 ...
- FormView分页显示数据的例子
%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FormView控件.aspx.cs ...
- C#使用系统的“显示桌面”功能(Shell.Application)
原文 C#使用系统的“显示桌面”功能(Shell.Application) 在 Windows 系统的 任务栏 上的 快速启动栏 里,通常有一个图标 ,点击这个图标,就会切换到桌面.这个图标实际是一 ...
- 网页中获取网络mp3文件的时常
<html> <audio id="audio" controls> <source src="http://cdn.kaishuhezi. ...
- 第一讲 一个简单的Qt程序分析
本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton&g ...
- 光学基础知识:白光、颜色混合、RGB、色彩空间
1665年,牛顿(Isaac Newton)进行了太阳光实验,让太阳光通过窗板的小圆孔照射在玻璃三角棱镜上,光束在棱镜中折射后,扩散为一个连续的彩虹颜色带,牛顿称之为光谱,表示连续的可见光谱.而可见光 ...
- [译]Stairway to Integration Services Level 11 - 日志配置
介绍 在前一个章节我们讨论了事先行为,分享了如何操作默认的行为和时间冒泡,并且介绍了父子模型. 本文中,我们会配置SSIS日志. 进行简单及高级日志配置,存储,和检索的实验.并且生成自定义日志信息. ...
- CheckBox控件实现选项的选中
1:设置控件属性 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...
- 对象作为返回值类型&&链式编程
package com.imooc; class Student{ public void study(){ System.out.println("学生学习"); } } cla ...