• 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 = localhostSQLEXPRESS; 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对象来访问数据库。

  • 相关阅读:
    【CF720D】Slalom 扫描线+线段树
    【CF724F】Uniformly Branched Trees 动态规划
    【CF725G】Messages on a Tree 树链剖分+线段树
    【CF736D】Permutations 线性代数+高斯消元
    【CF799E】Aquarium decoration 线段树
    【CF739E】Gosha is hunting 贪心
    【CF744D】Hongcow Draws a Circle 二分+几何
    【BZOJ3774】最优选择 最小割
    【BZOJ2138】stone Hall定理+线段树
    【BZOJ4445】[Scoi2015]小凸想跑步 半平面交
  • 原文地址:https://www.cnblogs.com/51kata/p/5318841.html
Copyright © 2020-2023  润新知