0%
访问数据库
数据库基本知识
- 数据库 DataBase
- 数据库管理系统 DBMS
- 常见 DBMS:Oracle、MS SQL Server
- 数据库系统的优点
- 管理功能
常用 DBMS
- 微软
- MS SQL Server
- MS Access(小型桌面数据库)
- 其他
关系型数据库
- 关系型数据库(RDBMS)
- 以二维表的形式组织数据
- 表 DataTable
- 行 DataRow(记录 Record)
- 列 DataColumn(字段 Field)
- 主键:primary key
数据库表的设计
实体关系图
- E-R 图
- 实体——关系图
- Entity-Relation

使用数据库
SQL
- SQL (Structured Query
Language),即结构化查询语言
- 是数据库的标准操作语言
- SQL包含数据定义、查询操纵和控制等多种功能
- 最常用的语句就是:增删改查
- 英文中叫 CRUD
- Create
- Retrieve
- Update
- Delelte
- 一些示例
SQL 编程
- Client/Server 模式 (客户/服务模式)
- 数据库提供服务,称为 Server
- 程序是客户端,称为 Client
- 客户端通过 SQL 命令来向服务端发出请求
- 编程的任务
- 通过用户界面获取参数,并形成 SQL 语句
- 建立与数据库的连接
- 向数据库管理系统发出命令(SQL)
- 从数据库得到数据并显示到用户界面
ADO.NET
- 这种访问数据库的技术叫 ADO.NET
- ADO.NET 实现数据库的访问
- 提供标准的 CRUD 接口
- 对不同的数据库提供统一的访问接口
- 发展历程
- ODBC(Open Database Connection)
- DAO(Data Access Object)
- ADO(ActiveX Data Object)
- ADO.NET
数据访问层

重要对象
Connection |
建立与特定数据源的连接 |
Command |
对数据源执行命令。 公开
Parameters, 并且可以从Connection在 Transaction 的范围内执行 |
DataReader |
从数据源中读取只进且只读的数据流 |
DataAdapter |
用数据源填充
DataSet,并解析更新 保证内存中的数据和数据库中的数据是一致的 |
供应程序 Provider
1 2 3 4 5 6 7 8
| using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data.Odbc;
using System.Data.OracleClient;
|
1 2 3 4 5
| System.Data.sqlClient.SqlDataAdapter da1;
System.Data.OleDb.OleDbDataAdapter da2;
|
ADO.NET 体系结构


数据库访问方法
- 方式 1: DataAdapter 及 DataSet
- 适合于 “离线” 处理
- 自动建立 Command 对象
- 方式 2:DataReader
- 它们都要使用 Connection 及 Command
- 不同的数据库有不同的命名空间,如下以 SqlServer 为例
Connection 对象
1 2 3 4 5
| using System.Data; using System.Data.SqlClient;
string connString = "server=localhost;database=pubs;uid=sa;pwd=aaa"; SqlConnection Conn = new SqlConnection(connString);
|
- SqlConnection
- Open() 方法
- SQL Provider 使用它来与 SQL Server 数据库进行连接
- ConnectionString 属性
连接字符串
- 不同数据库的 connection string 写法也会有所区别
- SqlServer \(\to\) SqlServer
Provider
1 2 3 4
| data source=MyServer; initial catalog=MyDataBase; user id=MyUser; password=MyPassword
|
- 早期的 Access 数据库 mdb 文件或 Excel 文件 \(\to\) Microsoft.Jet.OLEDB.4.0
1 2 3 4
| Provider=Microsoft.Jet.OLEDB.4.0; Password="xxx"; User ID= Admin; Data Source=D:\CsExample\ch10\BIBLIO.MDB
|
- 新版的 Access 数据库 accdb 文件或 Excel 文件 \(\to\) Microsoft.ACE.OLEDB.12.0
1 2 3 4
| Provider=Microsoft.ACE.OLEDB.12.0; Data Source=c:\myFile.xIxs; Excel 12.0 Xml; HDR=YES;
|
- Oracle \(\to\) Oracle Provider
1 2 3 4
| Provider=MSDAORA; DataSource=oracle db; User ID=scott; Password=tiger;
|
- Mysql \(\to\) MySql.Data.dll
1 2 3 4 5 6
| Data Source='localhost'; Database='wp'; User Id='root'; Password='root'; charset='utf8; pooling=true;
|
Command 对象
- 建立数据连接以后,可以利用 Command 对象来执行命令并从数据源返回结果
- ExecuteReader()
- ExecuteScalar()
- ExecuteNonQuery()
- 执行非查询性的命令(如Update/Delete/Insert)
- 返回的是它所影响的记录数
使用参数
1 2 3 4
| cmd.CommandText = "INSERT INTO Nations(CName, EName, FName) VALUES(@CName, @EName, @FName)"; cmd.Connection = this.sqlConnection1; cmd.Parameters.Add("@CName", SqlDbType.VarChar, 60).Value ="aaaaaa";
|
1
| cmd.CommandText = "Insert into Nataions(CName) Values('" + name + "')";
|
Command 和 DataReader
DataAdapter 和 DataSet
- 流程
- 使用 DataAdapter 来填充 DataSet
- 取得 DataSet 中的数据
- 修改 DataSet 中的数据
- 添加和删除行
- 在 DataTable 中查找数据
- 接受和拒绝更改
- 保存对 DataSet 的改变返回数据库
- 可以自动产生 Command
1 2
| OleDbCommandBuilder cmdbld = new OleDbCommandBuilder(daAdapter);
|

应用程序
界面及数据绑定
1 2
| DataGridView a = new DataGridView(); a.DataSource = myDataTable;
|
自定义工具类
酒店管理系统
- 分层架构
- UI:用户界面层(user graphical interface)
- BLL:业务逻辑层(business logic layer)
- DAL:数据访问层(data access layer)
- Model:数据模型
- ORMapping(Object-Relation Mapping)
- 代码
Sqlite
- Sqlite是一个小型的数据库,一个文件就可以包含库的内容,现在用得越来越多。在C#中使用也很方便。
- 使用Sqlite,需要安装System.Data.SQLite.Core
- 在visual
studio中,工具--NuGet包管理器--管理解决方案的NuGet程序包--浏览
- 搜索Sqlite就可以看见System.Data.SQLite.Core,然后选安装(安装时,项目名要打勾)