C#中如何定义数据库 *** 作类,并调用?

C#中如何定义数据库 *** 作类,并调用?,第1张

以下是我编写的一个 *** 作access数据库的类,其他数据库可以参考修改,原理差不多的。希望对你有帮助。

using System

using System.Collections.Generic

using System.Text

using System.Data.OleDb

using System.Configuration

using System.Data

namespace AutoEmailSender

{

/// <summary>

/// 数据库交互类

/// </summary>

public class DB

{

/// <summary>

/// 获得数据库连接

/// </summary>

/// <returns></returns>

public static OleDbConnection GetDBConnection()

{

return new OleDbConnection(ConfigurationManager.AppSettings["ConnectString"])

}

/// <summary>

/// 查询结果集

/// </summary>

/// <param name="sql">执行语句</param>

/// <returns>返回一个DataTable对象</returns>

public static DataTable ExecuteDataTable(string sql)

{

using (OleDbConnection con = GetDBConnection())

{

OleDbCommand cmd = new OleDbCommand(sql, con)

return ExecuteDataTable(cmd)

}

}

/// <summary>

/// 查询结果集

/// </summary>

/// <param name="cmd">执行语句的OleDbCommand命令</param>

/// <returns>返回一个DataTable对象</returns>

public static DataTable ExecuteDataTable(OleDbCommand cmd)

{

DataSet ds = new DataSet()

using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))

{

try

{

da.Fill(ds)

}

catch (Exception e)

{

throw e

}

}

if (ds.Tables.Count >0)

{

ds.Tables[0].DefaultView.RowStateFilter = DataViewRowState.Unchanged | DataViewRowState.Added | DataViewRowState.ModifiedCurrent | DataViewRowState.Deleted

return ds.Tables[0]

}

else

return null

}

/// <summary>

/// 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。

/// </summary>

/// <param name="sql">查询语句</param>

/// <returns>返回结果集中第一行的第一列的object值</returns>

public static object ExecuteScalar(string sql)

{

using (OleDbConnection con = GetDBConnection())

{

OleDbCommand cmd = new OleDbCommand(sql, con)

return ExecuteScalar(cmd)

}

}

/// <summary>

/// 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。

/// </summary>

/// <param name="cmd">查询命令</param>

/// <returns>返回结果集中第一行的第一列的object值</returns>

public static object ExecuteScalar(OleDbCommand cmd)

{

try

{

cmd.Connection.Open()

object obj = cmd.ExecuteScalar()

cmd.Connection.Close()

return obj

}

catch (Exception error)

{

cmd.Connection.Close()

throw error

}

}

/// <summary>

/// 更新数据集

/// </summary>

/// <param name="dt">要更新的数据集</param>

/// <param name="insertCmd">插入SQL语句</param>

/// <param name="updateCmd">更新SQL语句</param>

/// <param name="deleteCmd">删除SQL语句</param>

/// <returns></returns>

public static int UpdateDataSet(DataTable dt, OleDbCommand insertCmd, OleDbCommand updateCmd, OleDbCommand deleteCmd)

{

using (OleDbDataAdapter da = new OleDbDataAdapter())

{

da.InsertCommand = insertCmd

da.UpdateCommand = updateCmd

da.DeleteCommand = deleteCmd

//da.UpdateBatchSize = 0//UpdateBatchSize:指定可在一次批处理中执行的命令的数量,在Access不被支持。0:批大小没有限制。1:禁用批量更新。>1:更改是使用 UpdateBatchSize *** 作的批处理一次性发送的。

da.InsertCommand.UpdatedRowSource = UpdateRowSource.None

da.UpdateCommand.UpdatedRowSource = UpdateRowSource.None

da.DeleteCommand.UpdatedRowSource = UpdateRowSource.None

try

{

int row = da.Update(dt)

return row

}

catch (Exception e)

{

throw e

}

}

}

/// <summary>

/// 返回一个查询语句执行结果的表结构

/// </summary>

/// <param name="sql">查询语句,不支持复杂SQL</param>

/// <returns></returns>

public static DataTable GetTableSchema(string sql)

{

sql = sql.ToUpper()

DataTable dt = null

using (OleDbConnection con = GetDBConnection())

{

OleDbCommand cmd = new OleDbCommand(sql, con)

con.Open()

using (OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.KeyInfo | CommandBehavior.SchemaOnly | CommandBehavior.CloseConnection))

{

dt = dr.GetSchemaTable()

}

}

return dt

}

/// <summary>

/// 根据输入的查询语句自动生成插入,更新,删除命令

/// </summary>

/// <param name="sql">查询语句</param>

/// <param name="insertCmd">插入命令</param>

/// <param name="updateCmd">更新命令</param>

/// <param name="deleteCmd">删除命令</param>

public static void GenerateUpdateSQL(string sql, OleDbCommand insertCmd, OleDbCommand updateCmd, OleDbCommand deleteCmd)

{

sql = sql.ToUpper()

DataTable dt = GetTableSchema(sql)

string tableName = dt.Rows[0]["BaseTableName"].ToString()

List<OleDbParameter>updatePrimarykeys = new List<OleDbParameter>()//主键参数集合

List<OleDbParameter>deletePrimarykeys = new List<OleDbParameter>()//主键参数集合,因为不能同时被OleDbCommand个命令引用,所以多申明一个

List<OleDbParameter>insertFields = new List<OleDbParameter>()//字段参数集合

List<OleDbParameter>updateFields = new List<OleDbParameter>()//字段参数集合

string columns = string.Empty, values = "", set = "", where = ""

foreach (DataRow dr in dt.Rows)

{

if (dr["IsAutoIncrement"].ToString().Equals("False"))

{

insertFields.Add(new OleDbParameter("@" + dr["BaseColumnName"].ToString(),

(OleDbType)dr["ProviderType"],

Convert.ToInt32(dr["ColumnSize"]),

dr["BaseColumnName"].ToString()))

updateFields.Add(new OleDbParameter("@" + dr["BaseColumnName"].ToString(),

(OleDbType)dr["ProviderType"],

Convert.ToInt32(dr["ColumnSize"]),

dr["BaseColumnName"].ToString()))

if (!string.IsNullOrEmpty(columns))

columns += ","

columns += dr["BaseColumnName"].ToString()

if (!string.IsNullOrEmpty(values))

values += ","

values += "@" + dr["BaseColumnName"].ToString()

if (!string.IsNullOrEmpty(set))

set += ","

set += dr["BaseColumnName"].ToString() + "=@" + dr["BaseColumnName"].ToString()

}

if (dr["IsKey"].ToString().Equals("True"))

{

updatePrimarykeys.Add(new OleDbParameter("@OLD_" + dr["BaseColumnName"].ToString(),

(OleDbType)dr["ProviderType"],

Convert.ToInt32(dr["ColumnSize"]),

ParameterDirection.Input,

Convert.ToBoolean(dr["AllowDBNull"]),

Convert.ToByte(dr["NumericScale"]),

Convert.ToByte(dr["NumericPrecision"]),

dr["BaseColumnName"].ToString(), DataRowVersion.Original, null))

deletePrimarykeys.Add(new OleDbParameter("@OLD_" + dr["BaseColumnName"].ToString(),

(OleDbType)dr["ProviderType"],

Convert.ToInt32(dr["ColumnSize"]),

ParameterDirection.Input,

Convert.ToBoolean(dr["AllowDBNull"]),

Convert.ToByte(dr["NumericScale"]),

Convert.ToByte(dr["NumericPrecision"]),

dr["BaseColumnName"].ToString(), DataRowVersion.Original, null))

if (!string.IsNullOrEmpty(where))

where += " and "

where += dr["BaseColumnName"].ToString() + "=@OLD_" + dr["BaseColumnName"].ToString()

}

}

insertCmd.CommandText = string.Format("insert into {0} ({1}) values ({2})", tableName, columns, values)

updateCmd.CommandText = string.Format("update {0} set {1} where {2}", tableName, set, where)

deleteCmd.CommandText = string.Format("delete from {0} where {1}", tableName, where)

insertCmd.Connection = GetDBConnection()

updateCmd.Connection = GetDBConnection()

deleteCmd.Connection = GetDBConnection()

foreach (OleDbParameter pa in insertFields)

{

insertCmd.Parameters.Add(pa)

}

foreach (OleDbParameter pa in updateFields)

{

updateCmd.Parameters.Add(pa)

}

foreach (OleDbParameter pa in updatePrimarykeys)

{

updateCmd.Parameters.Add(pa)

}

foreach (OleDbParameter pa in deletePrimarykeys)

{

deleteCmd.Parameters.Add(pa)

}

}

}

}

ShopNC商城系统采用了全新的框架体系,呈现给您更实用的界面,更流畅的搜索机制,更具人性化的管理后台,更符合当下互联网环境的B2B2C运营模式的解决方案,完美的与现有主流社区系统深度结合,融入开放平台信息转播分享机制,全力打造电商平台专项ERP(CRM)系统、ERP(RFID)系统等,携手电商平台运营商一同打通供应商、平台商、分销商、消费者链条化商业管道,获得纵深式持续化发展。

平台功能

不断改进的界面UI和用户体验度

ShopNC商城系统重视产品UI设计,不断提升用户体验度,每一次版本的更新升级都会在视觉与 *** 作流畅性上为使用者提供一个更理想的商城系统环境。

SNS模式买家中心

用户在会员中心可以将自己购买的宝贝或收藏的商品、店铺与好友分享,访问他人的空间也可获得其最新动态;互动模式让商城用户参与商品的品评推广。

自定义商品规格:

商城平台可以自行对各种类型的商品分类进行规格属性的自定义,商家发布商品时还可以再此基础上再次修改属性名称、上传规格图片,商品发布灵活高效。

买卖互评、商家动态评分

买卖双方可进行互评,买家更可以根据描述相符,服务态度、发货速度等情况对商家进行打分;有效的促进交易的安全性与服务质量。

自定义运费模板

功能丰富的运费模板,卖家可以随意自定义商品到达全国各个地区不同的运费标准,还可储存多套运费方案应对各类商品库存所在地不同的问题。合理使用,便捷强大。

商城平台掌控的营销手段

商城平台可以发起团购、满即送、限时折扣等多种形式的促销营销活动,参与活动的店铺商品将在索引列表页面中得到默认前排、取得更高的点击购买率;更低的商品价格和营销策略使平台,商家,买家三方受益。

SEO增强:

商城系统从代码结构上对SEO做了增强,支持商品展示页面关键信息的独立设置,更易于搜索引擎收录,为站长带来更多流量。

一键分享:

商城平台可以自主管理收藏与分享按钮,默认安装腾讯微博、新浪微博、人人网、开心网等流行分享按钮,方便会员进行商品分享。

数据导入:

支持淘宝CSV数据的导入功能,方便淘宝卖家迅速入住商城开店经营,替商家节省了时间,为招商降低了门槛。

第三方登录:

留住买家、方便买家是平台增长的核心价值之一,QQ登录、新浪微博登录为平台注入新活力,降低会员流失的可能性,方便QQ用户或新浪微博用户直接登录。 

广告管理:

广告是互联网赢利手段永恒不变的王者,商城系统增强了广告管理控制功能,助站长轻松实现平台的广告赢利。 

优惠券/代金券:

商城系统具有优惠券和代金券功能,满足线上经营与线下经营的互动经营模式,为平台吸引线下实体商铺提升平台信誉助力。 

直通车:

商家的需求是平台永远的追求,商城系统独有的直通车功能满足了商家商品排列靠前的需要,也为平台赢利创造了新的管道。 

金币管理:

为平台打造最具赢利价值的通道,完全实现线上支付流程,满足商家轻松购买广告及直通车服务的需要,实现平台轻松赢利。 

积分商城:

平台的核心价值是积累稳定的用户资源,而积分商城的出现无疑是增强了电商平台的用户粘度,迎合了平台的核心价值。 

扩展支持:

平台的运营追求的是可持续化的发展,在不断的发展过程中将出现电商平台的周边服务平台需求,ShopNC商城系统将持续满足平台运营当中不断产生的新需求,如开放平台融合、ERP(CRM)、ERP(RFID)、订单打印等,提供完成的电商平台服务体系。

功能优势

高安全: 

ShopNC商城系统采用PHP脚本语言与MySQL数据库制作而成,在程序制作过程中充分考虑安全性问题,并进行系统底层程序采用Zend加密,以确保系统的安全。 

跨平台: 

ShopNC商城系统适用于Linux/FreeBSD/Unix及微软Windows 2000/2003/2008/XP/NT等多种 *** 作系统; 

高性能: 

采用Zend Optimizer做最佳化处理,数据库优化、页面缓存,性能优越,为服务器减压提高性能,支持大流量网站; 

MVC框架: 

ShopNC商城系统采用 MVC(Model View Controller)开发模式,解决了程序扩展时在原程序上进行修改导致程序不能升级的问题。 

模板分离技术: 

ShopNC商城系统支持多套模板并存,采用独立自主研发的适应于ShopNC商城系统的页面样式与程序彻底分离的灵活模板解析引擎。 

URL重写技术: 

ShopNC商城系统采用URL重写技术,需要Apache的mod_rewrite开启或者IIS的Rewrite组件的安装支持,使搜索引擎更容易方便地收录网页。

运行环境

ShopNC商城系统具备跨平台特性,可运行于Linux/FreeBSD/Unix及微软Windows 2000/2003/2008/XP/NT等各种 *** 作系统环境下。推荐使用Linux/FreeBSD *** 作系统。 

ShopNC商城系统需要服务器上装有如下软件 

a、可用的httpd服务器(如Apache、IIS等);

b、php 5.0 及以上且 php 5.3 以下的php运行环境;

c、Zend Optimizer 3.X 及以上运行环境;

d、MySQL 5.0 及以上的数据库环境。

最新版本更新

ShopNC商城系统V2.0正式版发布

ShopNC商城系统V2.1正式版发布

ShopNC商城系统V2.2演示版发布


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6775013.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-28
下一篇2023-03-28

发表评论

登录后才能评论

评论列表(0条)

    保存