前言:
程序的运行过程,本质上是对数据流的处理,包含数据的存储和读取,其中存储和读取是基于数据结构,而怎么存储、怎么读取则基于算法,也就是所谓的“程序 = 数据结构 + 算法”。
不论是web开发,还是桌面应用开发,都会涉及到数据的处理和数据的存储问题。对于数据的存储和管理,数据库是不二之选。
1 数据库
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
所谓“数据库”是以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
可以分类为关系型数据库和非关系型数据库:
1.1 关系型数据库
MySQL
MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)
Percona Server(MySQL的代替品·)
PostgreSQL
Microsoft Access — 本文要介绍的
Microsoft SQL Server
Google Fusion Tables
FileMaker
Oracle数据库
Sybase
dBASE
Clipper
FoxPro
foshub
1.2 非关系型数据库
BigTable(Google)
Cassandra
MongoDB
CouchDB
Apache Cassandra
Dynamo
LevelDB(Google)
2 结构化查询语言(SQL)
这里有详细的语法介绍:
w3school.com.cn/sql
简而言之,SQL就是用来操作关系型数据库的,满足对应的语法,对数据库进行增、删、改、查。
3 C#编写实现增、删、改、查功能的类
类 AccessClass:
1 建立与数据库Access的链接
2 数据库进行增、删、改、查
public class AccessClass
{
string _strConn = @"provider = Microsoft.Jet.OLEDB.4.0;Data Source = D:\test.mdb";//数据库连接信息
OleDbConnection oleDb; //用于与数据库建立连接
OleDbCommand oleDbCommand; //用于执行SQL语句,但是先要指定连接的对象
OleDbDataAdapter dbDataAdapterCali; //数据适配对象,用于与数据库的数据建立连接
public System.Data.DataTable dataCali; //表对象,用于接收数据库查询的返回数据
/// <summary>
/// 插入一整行
/// </summary>
/// <returns></returns>
public bool insert(string str_time, string str_value)
{
/*
* 在test_data_new表中插入一整行
*/
string sql = "insert into test_data_new values('"+ str_time + "','" + str_value + "')";
/*
* 写入sql语句
*/
oleDbCommand.CommandText = sql;
/*
* 执行sql,并返回受影响的行数
*/
int i = oleDbCommand.ExecuteNonQuery();
return i > 0;
}
/// <summary>
/// 更新单个数据
/// </summary>
/// <returns></returns>
public bool update(string table_name, string str_sheet,string str_value)
{
string sql = "";
sql = "update table_name set sheet1 = '" + str_value + "' where sheet2 = '" + str_sheet+ "'";
oleDbCommand.CommandText = sql; //指定sql语句
int i = oleDbCommand.ExecuteNonQuery(); //执行sql语句
return i > 0;
}
/// <summary>
/// 查询表中的单行数据
///
/// </summary>
/// <returns></returns>
public bool select(string table_name, string str_value)
{
string sql = "";
sql = "select * from table_name where sheet2 = '" + str_value+ "'";
oleDbCommand.CommandText = sql;
dbDataAdapterCali.Fill(dataCali); //将数据库中的数据填充到dataTable中
return true;
}
/// <summary>
/// 删除测试的结果数据,便于下次再储存
/// </summary>
/// <returns></returns>
public bool delete()
{
string sql = "delete * from test_data_new";
/*
* 写入sql语句
*/
oleDbCommand.CommandText = sql;
/*
* 执行sql,并返回受影响的行数
*/
int i = oleDbCommand.ExecuteNonQuery();
return i > 0;
}
}
4 总结
以上只是实现对数据库的简单应用,属于应用层面。还需深入理解数据库内部实现原理、如何解决高并发、高可靠性,同时了解各个数据库之间的优缺点、以便用于技术选型。