第05篇:C#星夜拾遗之使用数据库

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

前言

C#常用来开发数据管理类软件,所以学会在C#程序中使用数据库是非常有必要的。目前微软的两个常用数据库软件分别是Access和Sql Server。读者可以自行了解这两种数据库的优劣点,笔者不做过多说明。这两种数据库也是在做开发时最常用的。

C#访问数据库是通过ADO.NET实现的。ADO.NET 是一组向 .NET Framework 程序员公开数据访问服务的类。ADO.NET 为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、XML 和应用程序数据的访问,因此是 .NET Framework 中不可缺少的一部分。ADO.NET 支持多种开发需求,包括创建由应用程序、工具、语言或 Internet 浏览器使用的前端数据库客户端和中间层业务对象。

MS在Framework 3.5中提供了Linq to Sql技术,但本文不做探讨,感兴趣的朋友可以阅读《LINQ体验系列文章导航》。本文将以Sql Server为例,介绍最基本是数据库使用方法:数据库连接、数据库命令、Sql语句、适配器、DataSet等。如果你已经了解了这些内容,那么请关掉这篇文章,笔者对于浪费你的宝贵时间表示歉意 :)

数据库连接

1、 引用命名控件System.Data, 并添加System.Data.SqlClient引用。

2、 获取连接字符串。这个字符串通常被放在App.config文件中;在Asp.NET程序里放在web.config文件中。你可以通过VS 2008 自动生成这个连接字符串。步骤如下:“数据”菜单项 > 添加数据源 > 选择“数据库”,下一步 > 点击“新建连接”> 在列表中选择“Microsoft Sql Server”,单击“继续”。这时会弹出一个“添加连接”的窗口,在这里选择Sql Server服务器,如果是本机,则填写(Local),或者点一个点即可。这里需要注意的是,如果你安装的是Express 2005版,需要填写 .\SqlExpress。接下来是选择登陆方式,笔者建议初学者使用Windows身份验证。然后选择数据库,选择完成数据库后即可点击“确定”按钮。这时回到了“选择数据库连接”窗口,点开折叠的连接字符串部分,这里面的字符串就是一个Sql Server连接字符串了。(Access也是这个步骤,自己试试吧。)

3、 使用这个字符串初始化一个数据库连接对象。Sql Server 连接类是SqlConnection,我们可以使用下面的代码实例化一个数据库连接对象:

SqlConnection sqlConn = new SqlConnection(connectionString);

connectionString 是上一步生成的连接字符串。如果不在构造函数中初始化连接字符串,也可以在先实例化一个对象,然后设置ConnectionString属性。代码如下:

SqlConnection sqlConn = new SqlConnection();

sqlConn.ConnectionString = connectionString;

数据库命令

1、 数据库命令在C#中使用类SqlCommand表示。SqlCommand类表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。此类无法继承。

2、 实例化一个SqlCommand类,需要一个可用的数据库连接和一个可执行的Sql语句。代码如下:

SqlCommand sqlCmd = new SqlCommand(sqlText,, sqlConn);

sqlText为可执行的Sql语句,sqlConn为一个可用的数据库连接

也可以在实例化SqlCommand对象后,设置CommandText属性和Connection属性。相应的代码如下:

SqlCommand sqlCmd = new SqlCommand();

sqlCmd.CommandText = sqlText;

sqlCmd.Connection = sqlConn;

Sql语句

如果你不了解Sql语句,那麻烦可就大了,赶快翻书吧,查查Sql语句该如何书写。如果想整点儿速成的东西,这里也只能给出几个简单的语句:

1、 Select语句:作用是从数据库中查询数据。如果你的数据库中有一个名为 books 的数据表,当要从books 中查询出所有数据时,你就可以这样写:

Select * From books;

如果只想从books中查询BookName(名称)和BookAuthor(作者)两个字段,可以这样写:

Select BookName, BookAuthor From books;

注:Sql语句是不区分大小写的。

如果你只想查询名称为《C#星夜拾遗》的书,则可以使用Where进行条件查询:

Select BookName, BookAuthor From books Where BookName = ‘《C#星夜拾遗》’;

2、 Insert 语句:作用是向数据库中插入一条数据。例如有一本书名为《C#星夜拾遗》,作者为齐飞的书,你就可以使用下面的语句插入数据库:

Insert into books (BookName, BookAuthor) Values (‘《C#星夜拾遗》’, ‘齐飞’);

3、 Update语句:作用是更新一条数据库中的数据,例如需要将《C#星夜拾遗》这本书的Price字段更新为39,那么Sql语句应该这样写:

Update books set Price=39 Where BookName=’《C#星夜拾遗》’;

注意,这里的Where条件很关键,如果不加Where条件,则会将整个数据表中所有行的Price都更新为39

4、 Delete语句:作用是删除记录。下面来删除书名为《C#星夜拾遗》的记录:

Delete From books Where BookName=’《C#星夜拾遗》’;

注意,这里的Where同样很关键,如果去掉,则会删除数据表中的所有行。

适配器和DataSet

相对与Sql Server的数据适配器是SqlDataAdapter,这个适配器的作用是执行一些辅助的工作,例如填充DataSet等。下面的语句将使用一个SqlDataAdapter填充一个DataSet。

SqlDataAdapter da = new SqlDataAdapter();

da.SelectCommand = sqlCmd;

DataSet ds = new DataSet();

da.Fill(ds);

注意:在执行Sql语句时,都需要一个打开的数据库连接,也就是需要以编程的方式打开数据库连接,代码为 sqlConn.Open();当连接使用完成后,再显示的将数据库关闭,代码为:sqlConn.Close();但是这里为什么没有呢?因为SqlDataAdapter已经帮我们完成了这部分操作。

回过头来说一下DataSet,DataSet 是 ADO.NET 结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet 由一组 DataTable 对象组成,您可使这些对象与 DataRelation 对象互相关联。您还可通过使用 UniqueConstraint 和 ForeignKeyConstraint 对象在 DataSet 中实施数据完整性。

我们可以将DataSet看成是一个数据表的集合,当我们使用SqlDataAdapter对DataSet进行数据填充后,DataSet将保存我们检索到的数据,方便我们使用。

下面假定数据表books 中存在一条BookName为《C#星夜拾遗》,BookAuthor为齐飞、Price 为39的记录,我们的Select语句为:

Select BookName, BookAuthor,Price From books Where BookName = ‘《C#星夜拾遗》’;

当使用上面的方法进行数据填充后,我们可以使用如下代码得到DataSet中的数据:

if (ds.Tables[0].Rows.Count > 0)

{

foreach (DataRow dr in ds.Tables[0].Rows)

{

string strBookName = dr["BookName"].ToString();

string strAuthor = dr["BookAuthor"].ToString();

double dPrice = Convert.ToDouble(dr["Price"]);

}

}

结束语

本文只对数据库的访问和简单Sql的使用进行了说明,初学者朋友可以尝试一下书中提到的例子,由于时间仓促,没有将代码整理为Demo,还望朋友们见谅。这些内容只是ADO.NET的皮毛,如果想深入了解,除了多练习之外,还要看看MSDN中对于ADO.NET的讲解,那才是一个完整的数据库访问教程。




本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2010/05/15/1736424.html,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
62 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
25天前
|
存储 SQL 数据库
C# 将 Word 转文本存储到数据库并进行管理
C# 将 Word 转文本存储到数据库并进行管理
|
1月前
|
SQL 存储 关系型数据库
C# .NET面试系列十:数据库概念知识
#### 1. 为什么要一定要设置主键? 设置主键是数据库设计中的一个重要概念,有几个主要原因: 1、唯一性 ```c# 主键必须保证表中的每一行都有唯一的标识。这样可以避免数据冗余和不一致性。如果没有主键或者主键不唯一,就可能出现数据混乱或错误。 ``` 2、查询性能 ```c# 数据库系统通常会使用主键来加速数据检索。主键通常会被索引,这样可以更快速地找到特定行的数据,提高查询效率。 ``` 3、关联性 ```c# 主键常常用于建立表与表之间的关系。在关系数据库中,一个表的主键通常与其他表中的外键建立关联,这种关系对于数据的一致性和完整性非常重要。 ``` 4、数据完
131 1
C# .NET面试系列十:数据库概念知识
|
3月前
|
C# 数据库 数据库管理
C#使用Poco链接SQLite数据库配置文件和错误的解决
C#使用Poco链接SQLite数据库配置文件和错误的解决
24 1
|
4月前
|
SQL 关系型数据库 MySQL
【Unity 3D】C#从mysql数据库中读取、封装SQL语句(附源码)
【Unity 3D】C#从mysql数据库中读取、封装SQL语句(附源码)
92 0
|
4月前
|
SQL 数据库连接 数据库
C# | 将DataGridView中的数据保存到Accesss数据库
要将WinForm的DataGridView中的数据保存到Access数据库,可以按照本文的步骤进行。 在Visual Studio中,打开项目,右键单击“引用”文件夹,选择“添加引用”,在“COM”选项卡中找到并选中“Microsoft Office 14.0 Access Database Engine Object Library”,然后单击“确定”按钮。
81 0
C# | 将DataGridView中的数据保存到Accesss数据库
|
4月前
|
C# 数据库
用C#连接到数据库实现学生学籍管理系统(三)
用C#连接到数据库实现学生学籍管理系统
|
4月前
|
C# 数据库 C语言
用C#连接到数据库实现学生学籍管理系统(一)
用C#连接到数据库实现学生学籍管理系统
|
5月前
|
数据库连接 C# 数据库
C#数据库连接配置文件存放至App.Config
将C#数据库连接配置文件存放到外置的App.config文件中,并且演示vs和Rider如何读取配置文件连接数据库
105 0
|
5月前
|
SQL 关系型数据库 MySQL
C#使用Npgsql或SqlClient连接数据库
在C#使用Npgsql和SqlClient连接SQLserver、pgsql
64 2