c#中数据库操作

转载 2015年11月18日 21:20:31

在c#中对数据的管理c# 可以有数据库,文件(如xml文件,txt文件),还有一些如容器类。其中数据库的操作相对便捷,安全。
下面我们讨论如何在程序中使用数据库。将数据库加入程序中一般来说分为以下三个步骤。
1、连接数据库:建立SqlConnection对象来连接数据库;
2、执行sql语句:指定SqlCommand对象,进行sql的执行和存储过程的调用;
3、返回结果:一般使用SqlDataReader或者DataSet联合SqlDataAdapter。

Connection 对象提供与数据源的连接。
Command对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。
DataReader 对象从数据源中提供快速的,只读的数据流。
DataAdapter 对象提供连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。

在我们讨论SqlConnection之前需要了解一个重要内容,连接字符串。
那么什么是连接字符串呢?就是这样一组被格式化的键值对:
它告诉ADO.NET数据源在哪里,需要什么样的数据格式,提供什么样的访问信任级别以及其他任何包括连接的相关信息。
语法:连接字符串由一组元素组成,一个元素包含一个键值对,元素之间由“;”分开。

(1)标准的安全连接

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPass
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;

(2)可信连接

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

在我们实际开发中,我们一般不会把连接字符串直接写在代码中,而是存储在配置文件里。把连接字符串写死在代码中,不便于维护,每次修改字符串时,还得重新编译代码。以ASP.NET应用程序为例,我们一般把连接字符串写在web.config配置文件的节点。例如:

<connectionStrings>
  <add name="connStr" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=SSPI" />
</connectionStrings>

因此,我们只需要在程序中添加相应代码来获取配置文件中的值,比如:

string connStr=
ConfigurationManager.ConnectionStrings["connStr"].ToString(); 

一、SqlConnection对象。
语法: public sealed class SqlConnection : DbConnection, ICloneable
表示 与SQL Server 数据库的连接。 此类不能被继承。
命名空间: System.Data.SqlClient
程序集: System.Data(在 System.Data.dll 中)
SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。 在客户端/服务器数据库系统中,它等效于一个到服务器的网络连接。 SqlConnection 与SqlDataAdapter和SqlCommand 一起使用,以便在连接到 Microsoft SQL Server 数据库时提高性能。

using (SqlConnection connection = new SqlConnection(
               connectionString))

关于这个类以下三个方法是必须了解的
Open: 使用 ConnectionString 所指定的设置打开数据库连接。
Dispose: 释放由 Component 使用的所有资源。
Close: 关闭与数据库的连接。 此方法是关闭任何已打开连接的首选方法。Close 方法回滚任何挂起的事务。 然后,它将连接释放到连接池,或者在连接池被禁用的情况下关闭连接。
除了在使用完资源后人为的释放掉使用资源关闭连接外,我们有一种更为优雅的方式,那就是使用using语句句柄托管资源。

二、SqlCommand对象
命名空间: System.Data.SqlClient
程序集: System.Data(System.Data.dll 中)

应该如何将数据交给SqlCommand对象呢?
(1)通过构造函数。代码如下:

string strSQL = "Select * from tb_SelCustomer";
SqlCommand cmd = new SqlCommand(strSQL, conn);

(2)通过Command对象的属性。代码如下:

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = strSQL;

常用方法:
1、ExecuteNonQuery()  增删改操作
2、ExecuteScalar()   返回第一行第一列
3、ExecuteReader()  创建一个SqlDataReader用于读取数据
4、ExecuteXmlReader()  返回System.XmlReader实例,用于读取SQLServer中的XML字段的值
5、BeginExecuteNonQuery() 异步版ExecuteNonQuery()
6、EndExecuteNonQuery()  异步版ExecuteNonQuery()
文档参考:
http://www.cnblogs.com/kissdodog/archive/2013/09/23/3334579.html
它封装了所有对外部数据源的操作(包括增、删、查、改等SQL语句与存储过程),并在执行完成后返回合适的结果。

三、SqlDataReader和DataSet+SqlDataAdapter
两者间的区别:
1、SqlDataReader //基于连接,只读访问 适合数据量较小。
SqlDataAdapter //基于非连接,适于数据量较大时,可以另行修改,最后再把修改结果返回给数据库。要求资源也大一点
2、SqlDataAdapter 读取数据后将数据集放入DataSet ,DataSet 的数据存在本地客服机内存。
3、SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活,一般在只读的时候才用到。
SqlDataAdapter返回的是数据集或者表,可以对其中的数据作任意操作
4、写法上不同:
SqlDatReader执行前须先打开数据库,然后须生成一个COMMAND对象。再由COMMAND.EXECUTEREADER()方法赋值。完成后须手动关闭联接。
SqlCommand cmd = new SqlCommand(“select * from stu”, conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
conn.close();
SqlDataAdapter 执行时,自动打数据库,且不用Command的ExecuteReader方法进行赋值,完成后自动断开联接。

SqlDataAdapter adptr = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
adptr.Fill(ds, "stu");
                                              by Riddle

C#中对数据库的基本操作(增删改以及调用存储过程)

因为最近在写web API的时候需要对数据库操作,所以要用到ADO.NET,因为之前没有接触过.NET所以也是一边上网查资料看C#书一边写,现在对这块基础的部分已经掌握了,现在写下来只是想对自己前段时...
  • zhang_guyuan
  • zhang_guyuan
  • 2016年11月12日 16:33
  • 3996

c# 操作ACCESS数据库

c# 简单操作ACCESS
  • nanxizhu
  • nanxizhu
  • 2014年11月06日 20:10
  • 2318

C#.NET操作数据库通用类

下面给出了一个C#操作MS SQL Server 数据库的通用类,通过该类可以对数据库进行任何操作,包括执行SQL语句、执行存储过程。以下是其详细实现过程,希望大家共同修改优化之。稍后将介绍如何使用它...
  • ecjtuync
  • ecjtuync
  • 2007年04月25日 16:47
  • 1462

C#数据库操作类(完整通用)

using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; ...
  • angela8804100029
  • angela8804100029
  • 2013年04月14日 19:09
  • 1842

C#简单数据库操作

C#语言提供了丰富的数据库操作类库,极大地方便了对数据库的操作。在C#中,常用的有三种 访问数据库的模式分别为:SqlClient模式、OleDb模式和Odbc模式。其中SqlClient模式是微软老...
  • qq_20161893
  • qq_20161893
  • 2017年10月30日 13:08
  • 279

C# 数据库操作封装

1.数据库封装接口using System; using System.Data;namespace DBClass { public interface IDBfun : IDisposab...
  • Gary_888
  • Gary_888
  • 2017年04月24日 11:40
  • 1908

C# 连接 SQL Server 2008 基础操作+数据库增删改查

菜鸟教程,C#操作数据库。 安装数据库、启动SQLServer2008并连接数据库服务器,windows界面下简单操作数据库、C#连接数据库、数据库基本操作增删改查...
  • u012586042
  • u012586042
  • 2017年07月23日 10:30
  • 337

老程序员学C# ------实例一 登陆系统的数据库操作

该实例通过一个用户登陆程序,将C#中数据库和窗口间的数据传递等知识进行了梳理,同时也提供了一个在实际项目中运用的开发模式。...
  • lanhai96
  • lanhai96
  • 2010年07月04日 14:45
  • 7905

C#操作mysql数据库的实例

《C#操作mysql数据库实例》-- 本文主要分享的是使用C#简单快捷的操作Mysql数据库的完整实现过程。...
  • lgj123xj
  • lgj123xj
  • 2017年04月27日 13:54
  • 3076

C#SQLServer数据库操作类

using System; using System.Collections.Generic; using System.Text; using System.Configuration; using...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2017年03月15日 14:12
  • 260
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c#中数据库操作
举报原因:
原因补充:

(最多只允许输入30个字)