C#对SQLite、Access数据库操作的封装,很好用的~
1、对SQLite的封装:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SQLite; namespace DataBaseHelper
{
public class SQLiteHelper
{
SQLiteConnection connection = null;
SQLiteTransaction transaction = null;
string conn_str = ""; //----创建连接串并连接数据库----
public SQLiteHelper(string path, string password)
{
conn_str = "data source=" + path + ";password=" + password;
} public bool Connect()
{
try
{
if (connection != null)
{
connection.Close();
connection = null;
} connection = new SQLiteConnection(conn_str);
connection.Open();
if (connection == null)
{
return false;
}
return true;
}
catch (SQLiteException ex)
{
return false;
}
} //----修改数据库密码----
public bool ChangePassword(string newPassword)
{
try
{
connection.ChangePassword(newPassword);
return true;
}
catch (SQLiteException ex)
{
return false;
}
} //----关闭数据库连接----
public bool DisConnect()
{
try
{
if (connection != null)
{
connection.Close();
connection = null;
}
return true;
}
catch (SQLiteException ex)
{
return false;
}
} /// <summary>
/// 执行一个查询语句,返回一个包含查询结果的DataTable
/// </summary>
/// <param name="sql">要执行的查询语句</param>
/// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>
/// <returns></returns>
public DataTable ExecuteDataTable(string sql, SQLiteParameter[] parameters)
{
try
{
using (SQLiteCommand Command = new SQLiteCommand(sql, connection))
{
if (parameters != null)
{
Command.Parameters.AddRange(parameters);
}
SQLiteDataAdapter adapter = new SQLiteDataAdapter(Command);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
}
catch (SQLiteException ex)
{
return null;
}
} /// <summary>
/// 对SQLite数据库执行增删改操作,返回受影响的行数。
/// </summary>
/// <param name="sql">要执行的增删改的SQL语句</param>
/// <param name="parameters">执行增删改语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>
/// <returns></returns>
public int ExecuteNonQuery(string sql, SQLiteParameter[] parameters)
{
int affectRows = ; try
{
using (SQLiteTransaction Transaction = connection.BeginTransaction())
{
using (SQLiteCommand Command = new SQLiteCommand(sql, connection, Transaction))
{
if (parameters != null)
{
Command.Parameters.AddRange(parameters);
}
affectRows = Command.ExecuteNonQuery();
}
Transaction.Commit();
}
}
catch (SQLiteException ex)
{
affectRows = -;
}
return affectRows;
} //收缩数据库 VACUUM
public bool Vacuum()
{
try
{
using (SQLiteCommand Command = new SQLiteCommand("VACUUM", connection))
{
Command.ExecuteNonQuery();
}
return true;
}
catch (System.Data.SQLite.SQLiteException ex)
{
return false;
} } public void BeginTransaction()
{
try
{
transaction = connection.BeginTransaction();
}
catch (SQLiteException ex)
{ }
} public void CommitTransaction()
{
try
{
transaction.Commit();
}
catch (SQLiteException ex)
{ }
} public void RollbackTransaction()
{
try
{
transaction.Rollback();
}
catch (SQLiteException ex)
{ }
} public void test()
{
SQLiteHelper helper = new SQLiteHelper("D:\\mysqlite.db",""); //连接到D盘下的mysqlite.db数据库,连接密码为123456
//bool ch = helper.ChangePassword("654321"); //将密码修改为:654321
helper.Connect(); string select_sql = "select * from student"; //查询的SQL语句
DataTable dt = helper.ExecuteDataTable(select_sql, null); //执行查询操作,结果存放在dt中 //向数据库中student表中插入了一条(name = "马兆瑞",sex = "男",telephone = "15550000000")的记录
string insert_sql = "insert into student(name,sex,telephone) values(?,?,?)"; //插入的SQL语句(带参数)
SQLiteParameter[] para = new SQLiteParameter[]; //构造并绑定参数
string[] tag = { "name", "sex", "telephone" };
string[] value = { "马兆瑞","男",""};
for (int i = ; i < ; i++)
{
para[i] = new SQLiteParameter(tag[i], value[i]);
}
int ret = helper.ExecuteNonQuery(insert_sql, para); //执行插入操作
}
}
}
2、对Access的封装:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb; namespace DataBaseHelper
{
public class AccessHelper
{
OleDbConnection connection = null;
OleDbTransaction transaction = null;
string conn_str = ""; //----创建连接串并连接数据库----
public AccessHelper(string path, string password)
{
conn_str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Jet OLEDB:Database Password= " + password;
} public bool Connect()
{
try
{
if (connection != null)
{
connection.Close();
connection = null;
} connection = new OleDbConnection(conn_str);
connection.Open();
if (connection == null)
{
return false;
}
return true;
}
catch (OleDbException ex)
{
return false;
}
} ////----修改数据库密码----
//public bool ChangePassword(string newPassword)
//{
// try
// {
// connection.ChangePassword(newPassword);
// return true;
// }
// catch (OleDbException ex)
// {
// return false;
// }
//} //----关闭数据库连接----
public bool DisConnect()
{
try
{
if (connection != null)
{
connection.Close();
connection = null;
}
return true;
}
catch (OleDbException ex)
{
return false;
}
} /// <summary>
/// 执行一个查询语句,返回一个包含查询结果的DataTable
/// </summary>
/// <param name="sql">要执行的查询语句</param>
/// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>
/// <returns></returns>
public DataTable ExecuteDataTable(string sql, OleDbParameter[] parameters)
{
try
{
using (OleDbCommand Command = new OleDbCommand(sql, connection))
{
if (parameters != null)
{
Command.Parameters.AddRange(parameters);
}
OleDbDataAdapter adapter = new OleDbDataAdapter(Command);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
}
catch (OleDbException ex)
{
return null;
}
} /// <summary>
/// 对Access数据库执行增删改操作,返回受影响的行数。
/// </summary>
/// <param name="sql">要执行的增删改的SQL语句</param>
/// <param name="parameters">执行增删改语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>
/// <returns></returns>
public int ExecuteNonQuery(string sql, OleDbParameter[] parameters)
{
int affectRows = ; try
{
using (OleDbTransaction Transaction = connection.BeginTransaction())
{
using (OleDbCommand Command = new OleDbCommand(sql, connection, Transaction))
{
if (parameters != null)
{
Command.Parameters.AddRange(parameters);
}
affectRows = Command.ExecuteNonQuery();
}
Transaction.Commit();
}
}
catch (OleDbException ex)
{
affectRows = -;
}
return affectRows;
} //收缩数据库 VACUUM
public bool Vacuum()
{
try
{
using (OleDbCommand Command = new OleDbCommand("VACUUM", connection))
{
Command.ExecuteNonQuery();
}
return true;
}
catch (OleDbException ex)
{
return false;
} } public void BeginTransaction()
{
try
{
transaction = connection.BeginTransaction();
}
catch (OleDbException ex)
{ }
} public void CommitTransaction()
{
try
{
transaction.Commit();
}
catch (OleDbException ex)
{ }
} public void RollbackTransaction()
{
try
{
transaction.Rollback();
}
catch (OleDbException ex)
{ }
}
}
}
调用示例:
AccessHelper helper = new AccessHelper("D:\\myaccess.mdb",""); //连接到D盘下的myaccess.mdb数据库,密码为123456789
helper.Connect();
string select_sql = "select * from student"; //查询的SQL语句
DataTable dt = helper.ExecuteDataTable(select_sql, null); //执行查询操作,结果存放在dt中
//向数据库中student表中插入了一条(name = "马兆瑞",sex = "男",telephone = "15550000000")的记录
string insert_sql = "insert into student(name,sex,telephone) values(?,?,?)"; //插入的SQL语句(带参数)
OleDbParameter[] para = new OleDbParameter[]; //构造并绑定参数
string[] tag = { "name", "sex", "telephone" };
string[] value = { "马兆瑞","男",""};
for (int i = ; i < ; i++)
{
para[i] = new OleDbParameter(tag[i], value[i]);
}
int ret = helper.ExecuteNonQuery(insert_sql, para); //执行插入操作
本人是IT菜鸟,代码有很多不足之处,望大家多多指教
C#对SQLite、Access数据库操作的封装,很好用的~的更多相关文章
- C# ACCESS数据库操作类
这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下! usi ...
- PHP中对数据库操作的封装
在动态网面设计中很多都要涉及到对数据库的操作,但是有时跟据需要而改用其它后台数据库,就需要大量修改程序.这是一件枯燥.费时而且容易出错的功作.其实我们可以用PHP中的类来实现对数据库操作的封装,从而使 ...
- C# .NET更智能的数据库操作的封装
前述: 对数据库操作的封装,相信网络上已经有一大堆,ORM框架,或者是.NET本身的EF,都很好的支持数据库操作.这篇文章是分享自己所思考的,对数据库操作的简单封装.我对于这篇文章,认为被浏览者所关注 ...
- 手把手封装数据层之DataUtil数据库操作的封装
上一篇我们写完了数据库连接的封装 没有看的请移步上一篇关于数据库连接的内容 这次我们讲数据库操作的封装.数据库的操作就是增删改查:心再大一点就可以直接分为查询和其他. 因为查询是有返回对象的,而其他都 ...
- Microsoft Access数据库操作类(C#)
博文介绍的Microsoft Access数据库操作类是C#语言的,可实现对Microsoft Access数据库的增删改查询等操作.并且该操作类可实现对图片的存储,博文的最后附上如何将Image图片 ...
- C# 对Access数据库操作的通用类
(转载自博主Jerry很简单) //Access数据库-C# 操作类 代码using System;using System.Collections.Generic;using System.Linq ...
- C# .NET更智能的数据库操作的封装完整版(重构)
前述: 第一次发表文章,不过是对数据库简单的封装,主要是阐述下思路.那么在上篇文章,在大家的指导下和提出意见,并自己对代码进行了思考.在这两天我重构了新的框架,我觉得我写的可以称得上框架,为什么?请大 ...
- asp.net mvc access数据库操作
连接access数据库其实也简单,只要按照mvc的模式来就可以,遵循c v约定就可以 既然渲染试图是强类型,那么取得的数据就转换成强类型,其他一切和asp.net操作一样 DB mydb = new ...
- C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]
原文链接 //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using Sy ...
随机推荐
- win10 uwp 毛玻璃
毛玻璃在UWP很简单,不会和WPF那样伤性能. 本文告诉大家,如何在 UWP 使用 win2d 做毛玻璃. 毛玻璃可以使用 win2D 方法,也可以使用 Compositor . 使用 win2d 得 ...
- opencv之从视频帧中截取图片
最近在训练一个人脸识别的模型,而项目训练需要大量真实人脸图片样本. 刚好项目用到opencv识别人脸,可以把每一帧图片保存下来,用此方法可以方便的获取大量的脸部样本,大约20分钟可以获取到10000张 ...
- iOS 通讯录空格
iOS 通讯录联系人出现 ASCII 码值为 160 的空格 NOTE: 这里的"空格"是指 在通讯录中取出的联系人中带有特殊空格 带有特殊空格的字符串 " ...
- 业余草双因素认证(2FA)教程
所谓认证(authentication)就是确认用户的身份,是网站登录必不可少的步骤.密码是最常见的认证方法,但是不安全,容易泄露和冒充.越来越多的地方,要求启用双因素认证(Two-factor au ...
- django 实现同一个ip十分钟内只能注册一次(redis版本)
上一篇文章,django 实现同一个ip十分钟内只能注册一次 的时候,我们在注册的时候选择使用的使我们的数据库来报错我们的注册的ip信息,可是如果数据量大,用户多的时候,单单靠我们的数据库 来储存我们 ...
- 有关CUBLAS中的矩阵乘法函数
关于cuBLAS库中矩阵乘法相关的函数及其输入输出进行详细讨论. ▶ 涨姿势: ● cuBLAS中能用于运算矩阵乘法的函数有4个,分别是 cublasSgemm(单精度实数).cublasDgemm( ...
- 从ELK到EFK演进
背景 作为中国最大的在线教育站点,目前沪江日志服务的用户包含网校,交易,金融,CCTalk 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)日志,热数 ...
- Photoshop颜色出现比较大的偏差,偏色严重,显示器配置文件2351似乎有问题
其实出现这个问题是因为 显示器的配置问题.并不是PS版本或者电脑系统问题. 一般在你首次启动PS的时候会出现提示:显示器配置文件2351似乎有问题. 如果你点击了继续运行那以后你使用PS打开任何文件都 ...
- 我眼中的WebViewJavascriptBridge
周六阳光明媚的早晨,非常适合整理和分享一些以前玩过的东西.曾经的工作中参与过一段时间iOS开发,在开发中有个小小的框架让我非常深刻,就是WebViewJavascriptBridge,用于原生控件与前 ...
- Lucene全文检索引擎
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...