zoukankan      html  css  js  c++  java
  • .net数据库操作

      刚接触到数据库时总是被数据库中的一些基本概念,比如Connection、Command、DataReader等,给整的糊里糊涂。如今,对数据库的基本操作有了一定的认识,特此做出总结,以便后续工作中查阅。

      Microsoft公司提供了几种常见的数据源操作:Sql server数据库,OLEDB数据源,ODBC数据源,Oracle数据库,而针对它们的一些常规操作可以说是大同小异,本文借以对Sql server数据库的操作进行Connection、Command、DataSet、DataAdapter、DataReader的介绍。

    SqlConnection:

    Sqlconnection是对象用来连接sql server数据库的,程序员对数据库的一切操作都是建立在数据库已经连通的基础上,因此对它有必要做一些基本的了解。

    SqlConnection的基本语法是(拿一个连接的语句):Data Source=192.168.100.46;Initial Catalog=database;User ID=sa;Password=sa

    而在实际的操作过程中经常把它放到配置文件中,以便后续进行更改,当然也可以把其基本项放到前台界面填写操作。

    放在配置文件中,参考代码:

    <?xml version="1.0"?>
    <configuration>
      <appSettings>
        <add key="ConnectionString" value="Data Source=192.168.100.46;Initial Catalog=database;User ID=sa;Password=sa"/>
        </appSettings>
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

    一句话:SqlConnection是对象连接数据库的。

    SqlCommand:

    在对象和数据库建立连接后,可以使用Command对象对数据库进行增、删、改、查等基本操作,操作实现方式可以是使用sql语句进行,也可以是使用存储过程。下面简单介绍Command对象的常用属性及其方法。

    常用属性:

    CommandType:获取或设置Command对象要执行命令的类型

    CommandText:获取或设置要对数据源执行的SQL语句、存储过程或表名

    CommandTimeOut:获取或设置在终止对执行命令的尝试并生成错误之前的等待时间

    Connection:获取或设置此Command对象使用的Connection对象的名称

    Parameters:获取Command对象要使用的参数集合。

    常用方法:

    ExecuteNonQuery:执行sql语句并返回受影响的行数

    ExecuteReader:执行返回数据集的select语句

    ExecuteScalar:执行查询,并返回查询所返回的结果集中第一行第一列

    一句话:SqlCommand是需要对数据库做出改变或调整时使用的,使用后(除查询)数据库会有变化。

    DataSet:

    DataSet是数据库操作过程中的核心对象,支持断开式、分布式数据方案的核心对象。DataSet对象是创建在内存中的集合对象,它可以包含任意数量的数据表,以及所有的表的约束、索引、和关系,就相当于一个小型关系的数据库。而一个dataset对象包含一组DataTable对象,这些对象可以与数据相关联,其中每个dataTable对象都是由DataColumn和DataRow对象组成的。

    对DataSet的常见操作:

    以编程方式在DataSet中创建dataTable、DataRelation、Constraint,并使用数据填充表

    通过DataAdapter填充dataSet

    使用XML加载和保持DataSet内容

    一句话:DataSet是一个保存数据的小型数据库,支持断开数据库连接后的操作。

     DataAdapter:

    DataAdapter对象是DataSet对象和数据源之间联系的桥梁,主要是从数据源中检索数据、填充DataSet对象中的表或者把用户对DataSet做出的更改写入到数据库中。

    常用属性:

    selectCommand:获取或设置用于在数据源中选择记录的命令

    InsertCommand:获取或设置用于将新的记录插入到数据库中命令

    UpdateCommand:获取或设置用于更新数据源中记录的命令

    DeleteCommand:获取或设置用于从数据集中删除记录的命令

    常用方法:

    Fill:从数据源中提取数据以填充数据集

    Update:更新数据源

    一句话:DataAdapter对用于连接dataSet和数据源的。

    DataReader:

    DataReader是一个简单的数据集,用于从数据源中检索只读数据集,常用于检索大量数据。DataReader每次读取数据时只在内存中保留一行记录,开销非常小。

    可以从Command对象的ExecuteReader方法从数据源中检索数据来创建DataReader对象。如:SqlDataReader sdr = cmd.ExecuteReader()

    常用方法:

    FieldCount:获取当前行的列数

    RecordsAffectde:获取执行SQL语句所更改、添加或删除的行数

    常用方法:

    Read:使用DataReader对象前进到下一条记录

    Close:关闭DataReader对象

    Get:用来读取数据集的当前行的某一列记录

    一句话:DataReader每次读取数据源时在内存中保留一行记录。

    综合运用:


    在实际项目开发中使用三层架构操作数据库,而最底层直接操作数据库会将上述所讲的一些基本概念综合运用,这里选择最常用到的两个方法以供参考:

    connectionString:数据库连接语句

    SQLString:sql语句

    //执行查询语句,返回dataset

    public static DataSet Query(string strSql)
            {
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    DataSet ds = new DataSet();
    
                    try
                    {
                        conn.Open();
                        SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(strSql, conn);
                        sqlDataAdapter.Fill(ds, "ds");
                    }
                    catch (SqlException ex)
                    {
                        throw new Exception(ex.Message);
                    }
    
                    return ds;
                }
            }

    //执行sql语句,返回影响的记录数

    public static int ExecuteSql(string strSql)
            {
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    using (SqlCommand cmd = new SqlCommand(strSql, conn))
                    {
                        try
                        {
                            conn.Open();
                            int rows = cmd.ExecuteNonQuery();
                            return rows;
                        }
                        catch (SqlException ex)
                        {
                            conn.Close();
                            throw new Exception(ex.Message);
                        }
                    }
                }
            }

    总结:先介绍到此处,后续如果对此有更深层的理解,再行补充。

  • 相关阅读:
    HDU 5912 Fraction (模拟)
    CodeForces 722C Destroying Array (并查集)
    CodeForces 722B Verse Pattern (水题)
    CodeForces 722A Broken Clock (水题)
    CodeForces 723D Lakes in Berland (dfs搜索)
    CodeForces 723C Polycarp at the Radio (题意题+暴力)
    CodeForces 723B Text Document Analysis (水题模拟)
    CodeForces 723A The New Year: Meeting Friends (水题)
    hdu 1258
    hdu 2266 dfs+1258
  • 原文地址:https://www.cnblogs.com/ysyn/p/3484996.html
Copyright © 2011-2022 走看看