C#中数据库的运用

原创 2015年11月18日 21:17:16

在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");
版权声明:本文为博主原创文章,未经博主允许不得转载。

DataSet中的数据全部插入数据库

首先,用Select语句查询需要插入数据的表,用Top 1查一行就够了,这个是为了给SqlDataAdapter生成表的架构用的。string strSql = "Select * from Tabl...
  • wind19850922
  • wind19850922
  • 2009年12月25日 15:40
  • 1313

elasticsearch在C#中的使用

elsticsearch中安装了x-pack后,查询时就需要用户名和密码了。 无账号密码,不可访问 curl http://192.168.0.2:9200/testindex/_count?pr...
  • manimanihome
  • manimanihome
  • 2017年02月18日 22:10
  • 222

C#泛型在项目中的运用

对于C#泛型着东西,其实用处还是很大的,主要是架构设计的好不好,架构设计的好,那么就可以发挥泛型的作用。 例如我要在CS端做一个信息接收管理软件那么可以这样设计: 1.设计一个主框架界面,...
  • qq_27466247
  • qq_27466247
  • 2016年04月11日 11:39
  • 381

C#中添加数据到数据库

1.利用SQL语句添加  在SQL语句中提供了INSERT语句进行数据添加,其语法格式如下。 INSERT [Into] table_name[(column_list)] values (data_...
  • a769901686
  • a769901686
  • 2014年03月15日 16:03
  • 4112

C#通过读取appconfig文件连接数据库

以Oracle为例,C#连接数据库的时候,需要一些连接字符串,一开始写在程序中,这样会有两个问题: 通用性不太好,如果程序具有普遍性,但是连接字符串写死了,每次替换很麻烦; 一个工程有很多个项目,每个...
  • endlessseaofcrow
  • endlessseaofcrow
  • 2017年11月30日 10:27
  • 189

如何获得数据库里所有表的名字(SQL+C#)

如何获得数据库里所有表的名字平时我们操作比较多的都是表里的数据,也许突然有一天会需要把所有表的名字都列出来看一看——比如,你的论坛是按每个版块一个表来管理的,这时候你要在首页列出各版块的名字。应该怎么...
  • FantasiaX
  • FantasiaX
  • 2007年07月27日 16:01
  • 7066

C#--I/O流操作文本文件之StreamWrite类和StreamReader类

使用
  • u010792238
  • u010792238
  • 2014年06月10日 16:52
  • 2112

C#遍历数据库中的表的名字

这里,举例说明。先看界面:   我这里用的是控件comBox来保存数据库中的表的名字; 下面是代码: //---创建连接 SqlConnection conn =...
  • HK_5788
  • HK_5788
  • 2015年09月17日 23:56
  • 2130

mysql 数据库实际应用中的大数据处理

某年某月,我们我接到公司的任务,要搭建一个游戏平台系统,管理旗下所有游戏的玩家账户数据。起初拿到任务后,想了想。那么这个系统就是一个注册,一个登陆就ok了。 于是有了下面的数据库设计。 tbl_acc...
  • wangchong_fly
  • wangchong_fly
  • 2015年10月31日 11:10
  • 749

C#获取数据库中的所有表

在很多情况下我们需要将指定的数据库中的所有表都列出来。在使用c#进行软件开发时,我们有哪些方法可是实现这个目的呢?本人对此进行概要的总结,有以下6中方式可以实现这个目的。1、sqldmo    SQL...
  • ycs0501
  • ycs0501
  • 2008年03月19日 11:56
  • 594
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#中数据库的运用
举报原因:
原因补充:

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