概述
JSM是jishume的縮寫,是一個開源項目的代稱。SqlHelper是由JSM開源團隊開發的資料庫操作組件,是繼前期微軟SqlHelper開發而來。
新特性
1.繼承了原SqlHelper的靜態方法模式並加以最佳化。
2.增強web.config配置支持,以方便網站的日常維護。
3.增加面象對象類,使用SqlHelper對象可以輕鬆實現複雜的程式邏輯。
4.增加對Access、Oracle、MySql資料庫支持。
5.增加TableFramework類,用於實現簡單的Insert和Update語句,自動生成參數和Sql語句,減少代碼量。
配置方法
打開web.config檔案,配置configuration節點下的configurationSettings中的add項,其中name標識為程式默認的讀取連結地址,如果不想在web.config中讀取,可以重寫和使用方法傳入方式傳入連結字元串。web.config配置實例代碼如下:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add connectionString="server=.;uid=sa;pwd=***;database=dbname" name="SqlServerHelper"/>
<add connectionString="Data Source=orcl;User Id=system;Password=***;Integrated Security=no" name="OracleHelper"/>
<add connectionString="server=localhost;uid=root;pwd=***;database=mysql_dbname" name="MySqlHelper"/>
</connectionStrings>
<system.web>
<compilation debug="true" />
</system.web>
</configuration>
實現方法
/// <summary>
/// 讀取學生信息
/// </summary>
DataTable ReadStudent(long stid)
{
return SqlServerHelper.ReadTable("select * from [Students] where stid=@stid",
SqlServerHelper.CreateInputParameter("@stid", SqlDbType.BigInt, stid));
}
/// <summary>
/// 刪除學生信息
/// </summary>
int DeleteStudent(long stid)
{
return SqlServerHelper.ExecuteNonQuery("delete from [Students] where stid=@stid",
SqlServerHelper.CreateInputParameter("@stid", SqlDbType.BigInt, stid));
}
面象對象
/// <summary>
/// 讀取學生信息
/// </summary>
DataTable ReadStudent(long stid)
{
using (SqlServerHelper helper = new SqlServerHelper())
{
helper.Command.CommandText = "select * from [Students] where stid=@stid";
helper.AddParameter("@stid", SqlDbType.BigInt, stid);
helper.Open();
return helper.ReadTable();
}
}
/// <summary>
/// 刪除學生信息 實現事務和執行刪除SQL語句
/// </summary>
int DeleteStudent(long stid)
{
using (SqlServerHelper helper = new SqlServerHelper())
{
helper.Open();
//啟動事務
SqlTransaction tran = helper.Connection.BeginTransaction();
helper.Command.Transaction = tran;
try
{
helper.Command.CommandText = "delete from [Students] where stid=@stid";
helper.AddParameter("@stid", SqlDbType.BigInt, stid);
int r= helper.ExecuteNoneQuery();
tran.Commit();
return r;
}
catch {
tran.Rollback();
throw;
}
}
}