zoukankan      html  css  js  c++  java
  • 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对象来访问数据库。

  • 相关阅读:
    PAT甲级1056Mice and Rice
    李宏毅机器学习课程笔记-5.3神经网络中的反向传播算法
    李宏毅机器学习课程笔记-5.2神经网络为什么要是深度的
    PAT甲级1014Waiting in Line
    python批量处理邮件:poplib和email快速上手教程
    李宏毅机器学习课程笔记-5.1深度学习之引言
    李宏毅机器学习课程笔记-4.2分类模型之概率生成模型
    李宏毅机器学习课程笔记-4.1分类简介及其与回归的区别
    类自动加载封装类
    var与let循环中经典问题
  • 原文地址:https://www.cnblogs.com/51kata/p/5318841.html
Copyright © 2011-2022 走看看