数据访问层——表操作的封装
来源:互联网 发布:大连理工软件学院好吗 编辑:程序博客网 时间:2024/06/06 19:00
一个对数据库操作的封装类
调试环境:Visual Stdio 2005,C#.net
/// <summary>
/// 表数据基本操作
/// </summary>
public class DBTableOpt
{
protected DBRecordInfo record;
/// <summary>
/// 构造函数,必须指定记录信息
/// 您可以直接使用类名访问方法,设计者设计了两套实现方案
/// </summary>
public DBTableOpt(DBRecordInfo record)
{
this.record = record;
}
#region 插入操作
/// <summary>
/// TableBaseOpt: 插入操作
/// </summary>
public static int Insert(DBRecordInfo record)
{
int effectNum = 0;
string fields = "", values = "";
SqlParameter[] paraItem = GetItemParameters(record);
SqlConnection conn = null;
SqlCommand command = new SqlCommand();
SQLServerDAL dctrl = new SQLServerDAL();
for (int i = 1; i < paraItem.Length; i++)
{
if (record.FieldValue != null && record.FieldValue.ToString().Trim() != "")
{
fields += record.FieldName + ", ";
values += paraItem.ParameterName + ", ";
paraItem.Value = record.FieldValue;
command.Parameters.Add(paraItem);
}
}
if (fields == "" || values == "")
return 0;
string INSERT_CONTRACT_SQL = "insert into " + record.TableName + "(" + fields.Substring(0, fields.Length - 2) + ") values (" +
values.Substring(0, values.Length - 2) + ")";
dctrl.connectionData(ref conn);
command.Connection = conn;
command.CommandText = INSERT_CONTRACT_SQL;
try
{
conn.Open();
effectNum = command.ExecuteNonQuery();
}
catch
{
effectNum = -1;
//throw;
}
finally
{
command.Dispose();
conn.Close();
}
return effectNum;
}
/// <summary>
/// TableBaseOpt: 插入操作
/// </summary>
public int Insert()
{
return Insert(this.record);
}
#endregion
#region 删除操作
/// <summary>
/// TableBaseOpt: 删除操作
/// </summary>
public static int Delete(string tableName, string condition)
{
int effectNum = 0;
string DELETE_CONTRACT_SQL = "delete from " + tableName;
SqlConnection con = null;
SQLServerDAL dctrl = new SQLServerDAL();
SqlCommand command = new SqlCommand();
if (condition != null && condition.Trim() != "")
DELETE_CONTRACT_SQL += " where " + condition;
dctrl.connectionData(ref con);
command.Connection = con;
command.CommandText = DELETE_CONTRACT_SQL;
try
{
con.Open();
effectNum = command.ExecuteNonQuery();
}
catch
{
effectNum = -1;
//throw;
}
finally
{
command.Dispose();
con.Close();
}
return effectNum;
}
/// <summary>
/// TableBaseOpt: 删除操作
/// </summary>
public int Delete(string condition)
{
return Delete(this.record.TableName, condition);
}
#endregion
#region 修改操作
/// <summary>
/// Edit的原始操作,屏蔽
/// </summary>
private static int Edit(string tableName, string condition, string changeStr)
{
int effectNum = -1;
string DELETE_CONTRACT_SQL = "update " + tableName + " set ";
SqlConnection con = null;
SQLServerDAL dctrl = new SQLServerDAL();
SqlCommand command = new SqlCommand();
DELETE_CONTRACT_SQL += changeStr;
if (condition != null && condition.Trim() != "")
DELETE_CONTRACT_SQL += " where " + condition;
dctrl.connectionData(ref con);
command.Connection = con;
command.CommandText = DELETE_CONTRACT_SQL;
try
{
con.Open();
effectNum = command.ExecuteNonQuery();
}
catch
{
effectNum = -1;
//throw;
}
finally
{
command.Dispose();
con.Close();
}
return effectNum;
}
/// <summary>
/// TableBaseOpt: 修改操作
/// change保存了所有的操作,格式为{{fieldName,fieldValue}, {fieldName,fieldValue}, ...}
/// </summary>
public static int Edit(string tableName, string condition, string[][] change)
{
string changstr = "";
foreach (string[] chgCmpr in change)
{
changstr += chgCmpr[0] + " = " + chgCmpr[1] + " , ";
}
return Edit(tableName, condition, changstr.Substring(0, changstr.Length - 2));
}
/// <summary>
/// TableBaseOpt: 修改操作
/// change保存了所有的操作,格式为{{fieldName,fieldValue}, {fieldName,fieldValue}, ...}
/// </summary>
public int Edit(string condition, string[][] change)
{
return Edit(record.TableName, condition, change);
}
/// <summary>
/// TableBaseOpt: 修改操作
/// 根据record记录的修改信息更新表
/// </summary>
public static int Edit(DBRecordInfo record, string condition)
{
string changeMsg = "";
for (int i = 0; i < record.Length; i++)
{
if (record.IsChanged)
{
if (record.FieldType == SqlDbType.Char || record.FieldType == SqlDbType.DateTime || record.FieldType == SqlDbType.NChar ||
record.FieldType == SqlDbType.NText || record.FieldType == SqlDbType.NVarChar || record.FieldType == SqlDbType.SmallDateTime ||
record.FieldType == SqlDbType.Text || record.FieldType == SqlDbType.VarChar || record.FieldType == SqlDbType.Xml)
changeMsg += record.FieldName + " = '" + record.FieldValue.ToString().Trim() + "' , ";
else
changeMsg += record.FieldName + " = " + record.FieldValue + " , ";
}
}
if (changeMsg == "")
return 0;
return Edit(record.TableName, condition, changeMsg.Substring(0, changeMsg.Length - 2));
}
/// <summary>
/// TableBaseOpt: 修改操作
/// 根据record记录的修改信息更新表
/// </summary>
public int Edit(string condition)
{
return Edit(this.record, condition);
}
#endregion
#region 选择操作
/// <summary>
/// TableBaseOpt: 选择操作
/// </summary>
public static DataTable Select(string field, string table, string condition, string groupBy, string having, string order)
{
DataTable dt = null;
string SELECT_CONTRACT_SQL = "Select ";
if (field != null && field.Trim() != "")
SELECT_CONTRACT_SQL += field;
else
SELECT_CONTRACT_SQL += "*";
SELECT_CONTRACT_SQL += " From " + table;
if (condition != null && condition.Trim() != "")
SELECT_CONTRACT_SQL += " Where " + condition;
if (groupBy != null && groupBy.Trim() != "")
SELECT_CONTRACT_SQL += " Group by " + groupBy;
if (having != null && having.Trim() != "")
SELECT_CONTRACT_SQL += " Having " + having;
if (order != null && order.Trim() != "")
SELECT_CONTRACT_SQL += " Order By " + order;
SQLServerDAL dctrl = new SQLServerDAL();
try
{
dctrl.connectionData();
dt = dctrl.returnRecordSet(SELECT_CONTRACT_SQL).Tables[0];
}
catch
{
dt = null;
//throw;
}
finally
{
dctrl.closeConnect();
}
return dt;
}
/// <summary>
/// TableBaseOpt: 选择操作
/// </summary>
public DataTable Select(string field, string condition, string groupBy, string having, string order)
{
return Select(field, this.record.TableName, condition, groupBy, having, order);
}
/// <summary>
/// TableBaseOpt: 选择操作
/// </summary>
public DataTable Select(string condition, string groupBy, string having, string order)
{
return Select(null, this.record.TableName, condition, groupBy, having, order);
}
#endregion
/// <summary>
/// TableBaseOpt: 获取记录参数信息
/// </summary>
protected static SqlParameter[] GetItemParameters(DBRecordInfo record)
{
SqlParameter[] paras = new SqlParameter[record.Length];
for (int i = 0; i < record.Length; i++)
paras = new SqlParameter("@" + record.FieldName, record.FieldType, record.FieldSize);
return paras;
}
/// <summary>
/// TableBaseOpt: 获取记录参数信息
/// </summary>
protected SqlParameter[] GetItemParameters()
{
return GetItemParameters(this.record);
}
}
- 数据访问层——表操作的封装
- 数据访问层——表结构的封装
- 数据访问层——字段的封装
- .net中的数据访问层的封装
- DAO层数据操作的封装
- C++访问MySQL数据访问层封装
- iOS数据库离线缓存思路和网络层封装——数据缓存操作封装
- 数据访问的封装
- 一个简单的NET数据访问层操作类
- 解析数据访问层操作数据库的方式
- 数据访问层常用操作的JPA实现
- 数据操作层的基类,主要封装了数据的增,删,改,查功能
- 数据操作层的基类,主要封装了数据的增,删,改,查功能
- 数据操作层的基类,主要封装了数据的增,删,改,查功能
- Spring MVC控制层封装的数据在前台如何访问?
- 数据访问层的使用方法
- 数据访问层的设计
- 我的数据访问层
- 静态数据管理
- android JNI 学习笔记
- 数据访问层——字段的封装
- 数据访问层——表结构的封装
- css的效率是怎么样的呢,浏览器渲染的速度又如何呢(css,html渲染效率)
- 数据访问层——表操作的封装
- 页面控制
- Java常量定义需要注意的两点
- 多线程非递归实现的树控件
- FLV转MPG和转成其它格式的转码方法
- MS SQL Server还原备份
- 在线管理
- 后台动态创建控件随感
- UDP/TCP 打洞