日期:2014-05-18  浏览次数:20705 次

SqlHelper的详细应用方法
最近网上新流行的SqlHelper和传统的有很大不同,我在http://www.dbhelepr.org/sqlhelper/下载的,官方说比传统更简单和高性能,请高手指点!

------解决方案--------------------
呵呵,这个并不和一前一样是一个类了,是一个体系的组件了,是个完全开源。非常不错,国内还用的比较少,我也比较喜欢。使用方法:

第一步,如果是sqlserver或oracle在配置文件设置数据库链接字符串,如:

<connectionStrings>
<add connectionString="server=.;uid=sa;pwd=sa123;database=yourdatabase" name="SqlServerHelper"/>
<add connectionString="Data Source=orcl;User Id=system;Password=***;Integrated Security=no" name="OracleHelper"/>
</connectionStrings>

以上配置中,关键在于设定add节点中的name项,sqlserverhelper和oracleHelper。

第二步直接使用就行了,SqlServerHelper默认加载web.config中的configurationSettings中的name为SqlServerHelper的项为数据库链接字符串,而OracleHelper默认加载configurationSettings节点中name为OracleHelper的链接字符串,这一点很方便。

就需要执行一个sql语句时(静态方式):
SqlServerHelper.ExecuteNonQuery("insert into [students] values(@student_name,@class)",
SqlServerHelper.CreateInputParameter("@student_name", SqlDbType.NVarChar, 100, txt_student_name_sqlserver.Text),
SqlServerHelper.CreateInputParameter("@class", SqlDbType.NVarChar, 100, txt_class_sqlserver.Text)
);
评价:比传统的sqlhelper更方便,因为不用每次都传入sqlconnectionstring参数。

多sql语句和事务型(静态方式):
using (SqlConnection conn = SqlServerHelper.GetConnection())
{
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
try
{
SqlServerHelper.ExecuteNonQuery(conn, CommandType.Text, "insert into [students] values(@student_name,@class)",
SqlServerHelper.CreateInputParameter("@student_name", SqlDbType.NVarChar, 100, txt_student_name_sqlserver.Text),
SqlServerHelper.CreateInputParameter("@class", SqlDbType.NVarChar, 100, txt_class_sqlserver.Text)
);
g1.DataSource = SqlServerHelper.ReadTable(conn, CommandType.Text, "select * from [students]", null);
g1.DataBind();
tran.Commit();
}
catch { tran.Rollback(); throw; }
}

面向对象式编程方式:

using (SqlServerHelper helper = new SqlServerHelper())
{
DbTransaction tran = helper.Connection.BeginTransaction();
helper.Command.Transaction = tran;
try
{
helper.Command.CommandText = "insert into [Students]([student_name],[class])values(@student_name,@class)";
helper.AddParameter("@student_name", SqlDbType.VarChar, 255, studentname);
helper.AddParameter("@class", SqlDbType.VarChar, 255, stu_class);
helper.Open();
helper.ExecuteNoneQuery();
tran.Commit();
}
catch
{
tran.Rollback(); throw;
}
helper.Command.Transaction = null;
helper.Command.Parameters.Clear();
helper.Command.CommandText = "select * from [Students]";
return helper.ReadTable();
}
评价:自动即使打开关闭数据库链接,节省性能,语法简短清晰。