自己封装的Access数据库的操作类(AccessHelper)

加入了一个分页的方法,有空把其他的MYSQLHelper和SQLiteHelper也加上那个分页的方法,嘿嘿。

using System;
using System.Data;
using System.Data.OleDb;
/// <summary>
///Access数据库操作类
///创建时间:2010年4月16日17时9分
///作者:牛腩
///QQ: 164423073
/// </summary>
public class AccessHelper
{
private OleDbConnection conn = null;
private OleDbCommand cmd = null;
private OleDbDataReader sdr = null;
public AccessHelper()
{
//  string connStr = WebConfigurationManager.ConnectionStrings["connStr"].ToString();
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|db.mdb";
conn = new OleDbConnection(connStr);
}
/// <summary>创建Command对象
///  /// </summary>
/// <param name="sql">SQL语句</param>
public void CreateCommand(string sql)
{
conn.Open();
cmd = new OleDbCommand(sql, conn);
}
/// <summary>添加参数
///  /// </summary>
/// <param name="paramName">参数名称</param>
/// <param name="value">值</param>
public void AddParameter(string paramName, object value)
{
cmd.Parameters.Add(new OleDbParameter(paramName, value));
}
/// <summary>执行不带参数的增删改SQL语句
///   /// </summary>
/// <param name="cmdText">增删改SQL语句</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public bool ExecuteNonQuery()
{
int res;
try
{
res = cmd.ExecuteNonQuery();
if (res > 0)
{
return true;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
return false;
}
/// <summary>执行查询SQL语句
///   /// </summary>
/// <param name="cmdText">查询SQL语句</param>
/// <returns></returns>
public DataTable ExecuteQuery()
{
DataTable dt = new DataTable();
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}
/// <summary>分页
///
/// </summary>
/// <param name="tblName">表名</param>
/// <param name="fldName">字段名</param>
/// <param name="OrderfldName">排序字段名</param>
/// <param name="OrderType">排序方式:asc或者desc</param>
/// <param name="strWhere">条件,不用加where</param>
/// <param name="PageSize">页大小</param>
/// <param name="PageIndex">页索引</param>
/// <returns></returns>
public DataTable FengYe(string tblName, string fldName, string OrderfldName, string OrderType, string strWhere, int PageSize, int PageIndex)
{
DataTable dt = new DataTable();
string strSQL = ""; // 主语句
string strTmp = ""; // 临时变量
string strOrder = ""; // 排序类型
if (OrderType == "desc")
{
// 降序
strTmp = "<(select min";
strOrder = " order by " + OrderfldName + " desc";
}
else
{
// 升序
strTmp = ">(select max";
strOrder = " order by " + OrderfldName + " asc";
}
#region 第一页
if (PageIndex == 1)
{
strTmp = string.IsNullOrEmpty(strWhere) ? "" : " where " + strWhere;
strSQL = "select top " + PageSize + " " + fldName + " from " + tblName + strTmp + " " + strOrder;
CreateCommand(strSQL);
dt = ExecuteQuery();
return dt;
}
#endregion
#region 不是第一页
if (string.IsNullOrEmpty(strWhere))
{
// 条件为空
strSQL = string.Format("select top {0} {1} from {2} where {3}{4}({5}) from (select top {6} {7} from {8} {9}) as tblTmp) {10}", PageSize, fldName, tblName, OrderfldName, strTmp, OrderfldName, (PageIndex - 1) * PageSize, OrderfldName, tblName, strOrder, strOrder);
CreateCommand(strSQL);
dt = ExecuteQuery();
}
else
{
// 条件不为空
strSQL =string.Format( "select top {0} {1} from {2} where {3}{4}({5}) from (select top {6} {7} from {8} where {9} {10}) as tblTmp) and {11} {12}",PageSize,fldName,tblName,OrderfldName,strTmp,OrderfldName,(PageIndex-1)*PageSize,OrderfldName,tblName,strWhere,strOrder,strWhere,strOrder);
CreateCommand(strSQL);
dt = ExecuteQuery();
}
#endregion
return dt;
}
/// <summary>返回查询SQL语句查询出的结果的第一行第一列的值
///  /// </summary>
/// <returns></returns>
public string ExecuteScalar()
{
string res = "";
try
{
object obj = cmd.ExecuteScalar();
if (obj != null)
{
res = obj.ToString();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
return res;
}
}

自己做的测试项目下载:http://niunan.net/download/accesshelper.7z

直接在网页上博客园发表文章慢死了,突然发现在发表文章的那个页面有个windows live writer的东西,下载来试了下,

呵呵。。真不错啊。 这篇文章就是在这个玩意上发表的,蛮爽的。

时间: 2024-11-23 12:33:29

自己封装的Access数据库的操作类(AccessHelper)的相关文章

ACCESS数据库访问的类

大部分ASP应用,都离不开对数据库的访问及操作,所以,对于数据库部分的访问操作,我们应该单独抽象出来,封装成一个单独的类.如果所用语言支持继承,可以封装一个这样的类,然后在数据操作层继承即可.下面是我写的一个ACCESS数据库访问的类,针对ACCESS作了优化,不过因为缺少足够的应用测试,可能仍然存在未知的bug及应用限制,主要代码如下: <% Class Oledb Private IDataPath Private IConnectionString Private Conn Private

c++-C++ 对access数据库进行操作,如果不能用MFC,应该用什么??

问题描述 C++ 对access数据库进行操作,如果不能用MFC,应该用什么?? C++操作access数据库,但框架禁止使用MFC,呢我应该用什么来操作access数据库, 平台:VS2010 解决方案 尝试使用SQL,access很少用了 解决方案二: 可以使用ADO连接ACCESS数据库 解决方案三: https://msdn.microsoft.com/zh-cn/library/office/ff965871%28v=office.14%29.aspx 解决方案四: 用ADO操作数据库

Access数据库访问助手类

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; using System.Collections; namespace TaoBaoSyncLibrary.Dal { /// <summary> /// Access数据库访问助手类 /// </summary> public class DBHelper_Ac

access数据库-C#连接Access数据库insert操作时,debug目录下临时数据库修改了,但是原数据库不变。

问题描述 C#连接Access数据库insert操作时,debug目录下临时数据库修改了,但是原数据库不变. 尝试把accdb放在debug文件下下过,但是我导入时它自动就会在项目文件夹里复制过去一个数据库文件.insert操作时,显示插入的信息是成功的,并且当时可以搜索到该数据,但重新运行程序后,以前的数据未被保存. App.config < ?xml version="1.0" encoding="utf-8" ?> < configurati

远程操作access数据库-java操作其它机器共享的access数据库

问题描述 java操作其它机器共享的access数据库 做插入操作的时候报错:java.sql.SQLException [microsoft] [ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询

自己封装的ASP.NET的SQLITE数据库的操作类

代码 /*  * 作者: 牛腩  * 创建时间: 2010-1-20 10:43:14  * Email: 164423073@qq.com  * 说明: 对SQLite数据库的增删查改操作的封装类  */ using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SQLite;using System.Web.Conf

access数据库-ADO操作Access 的SQL 语句怎么用Access 查询设计的SQL 视图改造一下就能使用

问题描述 ADO操作Access 的SQL 语句怎么用Access 查询设计的SQL 视图改造一下就能使用 ADO操作Access 的SQL 语句怎么用Access 查询设计的SQL 视图改造一下就能使用. 解决方案 Access的试图只能内部VBA使用,你得把完整得SQL复制到程序中,作为ADO的Open()或Execute()方法的参数调用.

如何通过c#对ACCESS数据库进行操作

问题描述 privatevoidbutton4_Click_1(objectsender,EventArgse){if(sc_name.Text!=""){stringsql="deletefromstuwhere姓名=@name";if(connection.State!=ConnectionState.Open)connection.Open();OleDbCommandcmd=newOleDbCommand(sql,connection);cmd.Parame

asp.net Oracle数据库访问操作类_实用技巧

复制代码 代码如下: using System;using System.Collections;using System.Collections.Specialized;using System.Data;using System.Data.OracleClient;using System.Configuration;using System.Data.Common;using System.Collections.Generic;     /// <summary>    /// 数据访