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(0) + "," + reader.GetString(1);
                    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对象来访问数据库。

 

posted @ 2016-03-25 11:40  51kata  阅读(8132)  评论(0编辑  收藏  举报