数据访问层-- 对DataTable的扩展
来源:互联网 发布:哪些智障广告知乎 编辑:程序博客网 时间:2024/06/11 20:55
对数据库的操作其实可以很简单
DataTable dt = new CustomDataTable("MyTable1");
DataRow dr = DT.GetNewRow(true);
dr[0] = "sadfas";
DT.UpData();
GridBind();
就这样轻而易举的对数据进行操作
/// <summary>
/// 自定义DataTable,封装对数据库的操作,只处理select 语句
/// </summary>
public class CustomDataTable:DataTable
{
private SQLServer sqlServer;
SqlDataAdapter sqlDataAdapter;
//private CustomDataTable(){}
private void Init(string SQLString)
{
sqlServer = SQLServer.Instance();
sqlDataAdapter = new SqlDataAdapter(SQLString,sqlServer.Connection);
SqlCommandBuilder custCB = new SqlCommandBuilder(sqlDataAdapter);
sqlServer.Connection.Open();
try
{
sqlDataAdapter.FillSchema(this,SchemaType.Source);
sqlDataAdapter.Fill(this);
}
finally
{
sqlServer.Connection.Close();
}
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="SQLString">Select 语句或表名</param>
public CustomDataTable(string SQLString)
{
string SQL = SQLString.Trim().ToUpper();
if(SQL.StartsWith("SELECT"))
{
Init(SQL);
}
else
{
Init("SELECT * FROM "+SQL);
this.TableName = TableName;
}
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="Condition">条件</param>
public CustomDataTable(string TableName,string Condition)
{
string SQL = "SELECT * FROM " + TableName ;
if(Condition != null && Condition != "" && Condition.Trim() != "")
SQL += " WHERE " + Condition;
Init(SQL);
this.TableName = TableName;
}
/// <summary>
/// 提交
/// </summary>
public void UpData()
{
try
{
sqlServer.Connection.Open();
sqlServer.BeginTransaction();
sqlDataAdapter.SelectCommand.Transaction = sqlServer.SqlTran;
sqlDataAdapter.Update(this);
sqlServer.CommitTransaction();
}
catch
{
sqlServer.RollbackTransaction();
throw;
}
finally
{
sqlServer.Connection.Close();
}
}
/// <summary>
/// 取新行
/// </summary>
/// <param name="FlagAdd">标志位,True表示新行加入到表中,False反之</param>
/// <returns>新行的引用</returns>
public DataRow GetNewRow(bool FlagAdd)
{
DataRow dr = this.NewRow();
if(FlagAdd)
this.Rows.Add(dr);
return dr;
}
/// <summary>
/// 添加新行
/// </summary>
/// <param name="dr">新行</param>
public void AddNewRow(DataRow dr)
{
this.Rows.Add(dr);
}
/// <summary>
/// 获取一行
/// </summary>
/// <param name="Index">索引</param>
/// <returns>行的引用</returns>
public DataRow GetRow(int Index)
{
return this.Rows[Index];
}
/// <summary>
/// 获取行集
/// </summary>
/// <param name="Condition">条件</param>
/// <returns>行集</returns>
public DataRow[] GetRows(string Condition)
{
return this.Select(Condition,null,DataViewRowState.CurrentRows);
}
/// <summary>
/// 删除一行
/// </summary>
/// <param name="Index"></param>
public void DeleteRow(int Index)
{
this.Rows[Index].Delete();
}
/// <summary>
/// 删除行集
/// </summary>
/// <param name="Condition">条件</param>
public void DeleteRows(string Condition)
{
foreach(DataRow dr in GetRows(Condition))
dr.Delete();
}
/// <summary>
/// 删除表中所有记录
/// </summary>
public void Delete()
{
foreach(DataRow dr in this.Select(null,null,DataViewRowState.CurrentRows))
dr.Delete();
}
/// <summary>
/// 设置主键
/// </summary>
/// <param name="Keys">键</param>
public void SetPrimaryKey(params string[] Keys)
{
DataColumn [] dc = new DataColumn[Keys.Length];
for(int i=0;i<Keys.Length;i++)
{
dc[i] = this.Columns[Keys[i]];
}
this.PrimaryKey = dc;
}
}
- 数据访问层-- 对DataTable的扩展
- 数据访问层-- 对DataSet的扩展
- 抽象工厂+反射+依赖注入 实现对数据访问层和业务逻辑层的优化
- 抽象工厂+反射+依赖注入 实现对数据访问层和业务逻辑层的优化
- 抽象工厂+反射+依赖注入 实现对数据访问层和业务逻辑层的优化
- 数据访问层的使用方法
- 数据访问层的设计
- 我的数据访问层
- 数据访问层的使用方法
- 数据访问层的设计
- eBay 的数据层扩展经验
- SQLHelper层对数据库的访问代码
- 扩展Spring系列(2) ---Spring对各种数据访问框架的集成机制
- 扩展Spring系列(2) ---Spring对各种数据访问框架的集成机制
- 扩展Spring系列(2) ---Spring对各种数据访问框架的集成机制
- 提升数据访问层的性能(一)
- 提升数据访问层的性能(二)
- 提升数据访问层的性能
- Java、XML与数据库编程实践
- DudoJ框架——最初的设想
- enoeht的Java源码系列(4)--继续处理配置文件
- DudoJ框架——更进一步的设想
- 为什么要开发DudoJ持久化框架
- 数据访问层-- 对DataTable的扩展
- 修补SynEdit CVS 中文问题
- DudoJ框架——最后的冲刺
- enoeht的Java源码系列(5)--字符串加解密
- 内部消息,张纪中要拍大陆版《圣斗士星矢》
- 一生必读的书
- GHOST 能否兼职大容量压缩
- 下载搜狐小说-软件介绍
- 我的Blog开张了!