C#的数据库操作里,Access 算是上手比较快的一种。是你做些本地小工具、或者教学项目,轻量、省事还挺顺。用起来也不复杂,核心是搞清楚连接字符串,还有几个常用类怎么配合着用。比如,OleDbConnection负责连库,OleDbCommand负责执行 SQL,搭起来一气呵成。
在项目里,你先引用好System.Data和System.Data.OleDb这俩命名空间,就能用OleDbConnection
去连数据库了。连 Access 用的比较老的引擎是Microsoft.Jet.OLEDB.4.0
,新版可以换成Microsoft.ACE.OLEDB.12.0
。连接字符串像下面这样写:
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\Data\\worker.asp;";
嗯,这里的worker.asp
其实是个.mdb
文件,改名是为了安全一点。不然数据库名暴露出去太直接。你就可以像下面这样打开连接:
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
查询也直接,构建 SQL 语句,套上OleDbCommand
去跑。比如你想查昨天以来新增的书籍数目:
string sql = "SELECT COUNT(*) FROM book WHERE Format(hfsj, 'yyyyMMdd') >= '" + DateTime.Now.AddDays(-1).ToString("yyyyMMdd") + "'";
OleDbCommand command = new OleDbCommand(sql, connection);
拿ExecuteReader()
去跑它,读出来的结果可以这样:
OleDbDataReader reader = command.ExecuteReader();
if (reader.Read()) {
int count = Convert.ToInt32(reader[0].ToString());
}
记得关掉资源,省得占用连接:
reader.Close();
connection.Close();
如果你代码里经常查库,推荐加上using
块自动释放连接;安全点的话,也可以用参数化查询防 SQL 注入。连不上数据库时,优先检查路径、程序版本和文件权限这些,往往问题都卡在这。