SqlDataReader 和Dataset
想把他写道一个类里(c#),
在asp.net的窗体里,
怎么样来调用?
例如:
fetchData_sdk.cs
SqlDataReader fetchReader ( string query, string db ) {
// connect to data source
SqlConnection myConn = new SqlConnection (
"server=(local)\\NetSDK; trusted_connection=yes; database=" + db );
// initialize command object with query
SqlCommand myCmd = new SqlCommand ( query, myConn );
// open connection
myConn.Open ( );
// return datareader
return myCmd.ExecuteReader ( CommandBehavior.CloseConnection );
}
// generic method to fetch data from SQL Server into a dataset
DataSet fetchData ( string query, string db ) {
// connect to data source
SqlConnection myConn = new SqlConnection (
"server=(local)\\NetSDK; trusted_connection=yes; database=" + db );
// initialize dataadapter with query
SqlDataAdapter myAdapter = new SqlDataAdapter ( query, myConn );
// initalize and fill dataset with query results
DataSet myData = new DataSet ( );
myAdapter.Fill ( myData );
// return dataset
return myData;
}
我怎样在asp.net里复用上段代码?
帮帮忙了,^_^,先谢谢各位.
呵呵。ctrl + c & ctrl + v
SqlDataReader m_Reader=fetchReader("insert ....",DatabaseName);
DataSet m_DataSet=fetchReader("select....",DatabaseName);
写再webconfig里面啊
<appsetting>
<add key="sqlconn" value="local..........."/>
</appsetting>
用微软的SqlHelper类吧。
我是自己写了个类,封装常用数据库操作
然后在各个页面/组件/程序里引用就行乐
SqlHelper类确实好,不过我觉得自己写的才是最复合自己需要的,嗯
在网页的代码文件中加上引用就可以了
using fetchData_sdk;
呵,using fetchData_sdk所在的文件夹,如没有就using fetchData_sdk;
然后在代码里实例化类的一个对象,引用里面的方法就行了。
放在Page_load中
网上抄的,引用一下,希望给你帮助.
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
namespace Components
{
/// <summary>
/// 数据库操作类:实现最基本的数据库操作的类
/// </summary>
public abstract class Database
{
/// <summary>
/// 数据库连接串
/// </summary>
public static readonly string CONN_STRING = "server=bob;user id=sa;pwd=Kingter;database=classmate";
//public static readonly string CONN_STRING1 = ConfigurationSettings.AppSettings["ConnString"];
/// <summary>
/// 用于存放参数集
/// </summary>
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
/// <summary>
/// 执行 cmdText 语句并返回受影响的行数
/// </summary>
/// <param name="connString">数据库连接串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令语句</param>
/// <param name="cmdParms">命令参数集</param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 执行 cmdText 语句并返回受影响的行数,基于事务处理
/// </summary>
/// <param name="trans">事务句柄</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令语句</param>
/// <param name="cmdParms">命令参数集</param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
/// <summary>
/// 执行 cmdText 并生成一个 SqlDataReader。
/// </summary>
/// <param name="connString">数据库连接串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令语句</param>
/// <param name="cmdParms">命令参数集</param>
/// <returns>SqlDataReader对象</returns>
public static SqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connString);
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 执行 cmdText 并生成一个 SqlDataReader。
/// </summary>
/// <param name="connString">数据库连接串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令语句</param>
/// <param name="cmdParms">命令参数集</param>
/// <returns>DataTable对象</returns>
public static DataTable ExecuteDataTable(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
SqlDataAdapter cmd = new SqlDataAdapter();
cmd.SelectCommand=new SqlCommand();
SqlConnection conn = new SqlConnection(connString);
try
{
PrepareCommand(cmd.SelectCommand, conn, null, cmdType, cmdText, cmdParms);
DataSet ds = new DataSet();
cmd.Fill(ds);
cmd.SelectCommand.Parameters.Clear();
return ds.Tables[0];
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 执行查询,并返回查询所返回的结果集中第一行的第一列
/// </summary>
/// <param name="connString">数据库连接串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令语句</param>
/// <param name="cmdParms">命令参数集</param>
/// <returns></returns>
public static object ExecuteScalar(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 将参数集存在Hashtable中
/// </summary>
/// <param name="cacheKey">关键字</param>
/// <param name="cmdParms">参数集</param>
public static void CacheParameters(string cacheKey, params SqlParameter[] cmdParms)
{
parmCache[cacheKey] = cmdParms;
}
/// <summary>
/// 从Hashtable中取出参数集
/// </summary>
/// <param name="cacheKey">关键字</param>
/// <returns>参数集</returns>
public static SqlParameter[] GetCachedParameters(string cacheKey)
{
SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
if (cachedParms == null)
return null;
SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];
for (int i = 0, j = cachedParms.Length; i < j; i++)
clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
return clonedParms;
}
/// <summary>
/// 为执行SqlCommand准备设置
/// </summary>
/// <param name="cmd">命令集</param>
/// <param name="conn">连接句柄</param>
/// <param name="trans">事务处理名柄</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令语句</param>
/// <param name="cmdParms">参数集</param>
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = cmdType;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
}
}