分享
 
 
 

Web.Page基类,封装了数据库操作和Session处理

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

诸位大侠好,小生这厢有利了,最近用.Net开发一个系统,做了一些自己比较满意的封装,特请大家给些意见,小生文笔不是很好,又没有很多的时间,只好以源代码的形式发布,请大家多多见谅.另有相关代码和注释,请大家自己下载(goto)

/************************************

* FileName : WDDb.cs

* Target : 处理存取数据库的问题

* Author : Baihao

* CreateDate : 03/02/19

* LastModify : 03/04/09

* History :

*

*

************************************* */

using System;

using System.Data;

using System.Data.SqlClient;

using Wonder.SysConsole;

namespace Wonder.Web.Data

{

/// <summary>

/// WDDb 的摘要说明。

/// </summary>

public class DbObject

{

private const string CONNNECT_STRING = "data source=172.16.36.222;initial catalog=RemoteEdu;" +

"persist security info=False;user id=sa;password=1234567890;" +

"packet size=4096";

private string m_sErrorMessage = null;

protected SqlConnection Connection; //保护连接

private string connectionString; //私有连接字符串

private const string DEF_TABLE = "table1";

private SqlCommand command = new SqlCommand();

/// <summary>

/// A parameterized constructor, it allows us to take a connection

/// string as a constructor argument, automatically instantiating

/// a new connection.

/// </summary>

/// <param name="newConnectionString">Connection String to the associated database</param>

public DbObject( string newConnectionString )

{

connectionString = newConnectionString;

Connection = new SqlConnection( connectionString );

command.Connection = Connection;

}

public DbObject()

// :base(/*(SQLConnString.IniReadValue("catalog")== "")?CONNNECT_STRING:*/SQLConnString.GetConnStr())

{

connectionString = CONNNECT_STRING;

Connection = new SqlConnection( connectionString );

command.Connection = Connection;

//

// TODO: 在此处添加构造函数逻辑

//

}

/// <summary>

/// 传递字符型参数到SqlCommand

/// </summary>

/// <param name="str"></param>

/// <returns></returns>

public object SendStr(string str)

{

if(str == null)

return DBNull.Value;

else

return str;

}

/// <summary>

/// 传递日期型参数到SqlCommand

/// </summary>

/// <param name="dt"></param>

/// <returns></returns>

public object SendDate(DateTime dt)

{

if(dt.Ticks == 0)

return DBNull.Value;

else

return dt;

}

/// <summary>

/// 传送字节型数据到SqlCommand

/// </summary>

/// <param name="c"></param>

/// <returns></returns>

public object SendChar(char c)

{

if(c == '\0')

return DBNull.Value;

else

return c;

}

/// <summary>

/// 传送Guid型数据到SqlCommand

/// </summary>

/// <param name="c"></param>

/// <returns></returns>

public object SendGuid(Guid c)

{

if(c == Guid.Empty )

return DBNull.Value;

else

return c;

}

/// <summary>

/// 取得错误描述

/// </summary>

/// <returns></returns>

public string GetLastError()

{

return m_sErrorMessage;

}

/// <summary>

/// 清除 Err 对象的属性。

/// </summary>

public void ErrClear()

{

m_sErrorMessage = "";

}

/// <summary>

/// Protected property that exposes the connection string

/// to inheriting classes. Read-Only.

/// </summary>

protected string ConnectionString

{

get

{

return connectionString;

}

}

/// <summary>

/// Protected property that exposes the connection string

/// to inheriting classes. Read-Only.

/// </summary>

protected SqlCommand Command

{

get{return command;}

}

/// <summary>

/// 打开连接

/// </summary>

public void OpenConnect()

{

if(Connection.State != ConnectionState.Closed )

Connection.Close();

Connection.Open();

}

/// <summary>

/// 关闭连接,主要使用在查询结果后

/// </summary>

public void CloseConnect()

{

if(Connection.State != ConnectionState.Closed )

Connection.Close();

}

/// <summary>

/// 执行指定SQL语句

/// (ex:Exec(" Delete MemberInfo Where UserID ='baihao'; "))

/// **需要打开/关闭连接 **

/// </summary>

public void ExecNoOpen(string sSql)

{

command.CommandText = sSql;

command.CommandType= CommandType.Text;

command.ExecuteNonQuery();

}

/// <summary>

///执行查询语句,返回DataReader

///**由于DataReader还在查询数据库,没有断开连接,使用中请注意**

///(ex:(Query(" SELECT * FROM MemberInfo ")))

///不需要打开连接,但需要关闭

/// </summary>

/// <param name="storedProcName">查询语句</param>

/// <returns>A newly instantiated SqlDataReader object</returns>

public SqlDataReader Query(string sSql)

{

SqlDataReader returnReader;

try

{

OpenConnect();

command.CommandType= CommandType.Text;

command.CommandText= sSql;

returnReader = command.ExecuteReader();

//Connection.Close();

}

catch(Exception e)

{

m_sErrorMessage = e.Message;

return null;

}

return returnReader;

}

/// <summary>

/// 执行SQL语句并返回查询结果,返回有默认表名为"table1"的DataSet

/// (ex:FillDataSet("Select * from MemberInfo"))

/// 不需要打开/关闭连接

/// </summary>

/// <param name="sSql">要执行的Sql语句</param>

/// <returns></returns>

public DataSet FillDataSet(string sSql)

{

return FillDataSet(sSql,DEF_TABLE);

}

/// <summary>

/// 执行SQL语句并返回查询结果

/// (ex:FillDataSet("Select * from MemberInfo","MemberInfo"))

/// 不需要打开/关闭连接

/// </summary>

/// <param name="sSql">要执行的Sql语句</param>

/// <param name="sTable">返回的DataSet中的表名</param>

/// <returns></returns>

public DataSet FillDataSet(string sSql,string sTable)

{

DataSet dataSet;

try

{

dataSet = new DataSet();

OpenConnect();

SqlDataAdapter sqlDA = new SqlDataAdapter();

sqlDA.SelectCommand = command;

command.CommandText = sSql;

command.CommandType = CommandType.Text;

int nRows = sqlDA.Fill( dataSet, sTable );

if(nRows == 0 )

dataSet = null;

}

catch(SqlException e)

{

m_sErrorMessage = e.Message;

return null;

}

return dataSet;

}

/// <summary>

/// 执行SQL语句并返回查询结果

/// (ex:FillDataSet(ds,"Select * from MemberInfo","MemberInfo")) //在已经存在的打算中添加表

/// 不需要打开/关闭连接

/// </summary>

/// <param name="ds" >已经存在的DataSet,添加表</param>

/// <param name="sSql">要执行的Sql语句</param>

/// <param name="sTable">返回的DataSet中的表名</param>

/// <returns></returns>

public bool FillDataSet(ref DataSet ds,string sSql,string sTable)

{

bool bRe = true;

try

{

OpenConnect();

SqlDataAdapter sqlDA = new SqlDataAdapter();

sqlDA.SelectCommand = command;

command.CommandText = sSql;

command.CommandType = CommandType.Text;

int nRows = sqlDA.Fill( ds, sTable );

if(nRows == 0 )

bRe = false;

}

catch(SqlException e)

{

m_sErrorMessage = e.Message;

return false;

}

return bRe;

}

/// <summary>

/// 执行查询,并返回结果的第一行的第一列,忽略其他行和列。

/// (ex:GetFirstColumn(" SELECT UserName FROM MemberInfo Where UserID ='baihao'"))

/// 不需要打开/关闭连接

/// </summary>

/// <param name="sSql"></param>

/// <returns></returns>

public object GetFirstColumn(string sSql)

{

try

{

object oRe;

OpenConnect();

command.CommandType= CommandType.Text;

command.CommandText= sSql;

oRe = command.ExecuteScalar();

CloseConnect();

return oRe;

}

catch(Exception e)

{

m_sErrorMessage = e.Message;

return null;

}

}

/// <summary>

/// 执行查询,并返回整数型的第一行的第一列的结果,忽略其他行和列。

/// (ex:ExecuteScalar(" SELECT COUNT(*) FROM MemberInfo "))

/// 不需要打开/关闭连接

/// </summary>

/// <param name="sSql"></param>

/// <returns>返回-1,表示不成功,否则成功</returns>

public int ExecuteScalar(string sSql)

{

try

{

int iRe;

OpenConnect();

command.CommandType= CommandType.Text;

command.CommandText= sSql;

iRe = (int)command.ExecuteScalar();

CloseConnect();

return iRe;

}

catch(Exception e)

{

m_sErrorMessage = e.Message;

return -1;

}

}

/// <summary>

/// 执行指定SQL语句

/// (ex:Exec(" Delete MemberInfo Where UserID ='baihao'; "))

/// 不需要打开/关闭连接

/// </summary>

/// <param name="sSql"></param>

public void Exec(string sSql)

{

try

{

OpenConnect();

command.CommandType= CommandType.Text;

command.CommandText= sSql;

command.ExecuteNonQuery();

CloseConnect();

}

catch(Exception e)

{

m_sErrorMessage = e.Message;

}

}

}

/// <summary>

/// 封装SqlDataReader,主要处理了DBNull

/// </summary>

public class WDRead

{

public const byte NULL_INT = 0;

public const string NULL_STR = "";

public static DateTime NULL_DATE = new DateTime(1,1,1);

public const char NULL_CHAR = '\0';

public static Guid NULL_GUID = Guid.Empty;

/// <summary>

///

/// </summary>

public SqlDataReader m_read = null;

/// <summary>

/// 构造函数

/// </summary>

/// <param name="read"></param>

public WDRead(SqlDataReader read)

{

m_read = read;

}

/// <summary>

/// 读下一条记录

/// </summary>

/// <returns></returns>

public bool Read()

{

return m_read.Read();

}

/// <summary>

/// 取得字符串类型

/// </summary>

/// <param name="item">字段名</param>

/// <returns>字段值或NULL_STR</returns>

public string GString(string item)

{

if(m_read.IsDBNull(m_read.GetOrdinal(item)))

return NULL_STR;

else

return m_read.GetString (m_read.GetOrdinal(item));

}

/// <summary>

/// 取得整数类型

/// </summary>

/// <param name="item">字段名</param>

/// <returns>字段值或NULL</returns>

public int GInt(string item)

{

if(m_read.IsDBNull(m_read.GetOrdinal(item)))

return NULL_INT ;

else

return m_read.GetInt32 (m_read.GetOrdinal(item));

}

public Int16 GWord(string item)

{

if(m_read.IsDBNull(m_read.GetOrdinal(item)))

return NULL_INT ;

else

return m_read.GetInt16 (m_read.GetOrdinal(item));

}

/// <summary>

/// 取得日期类型

/// </summary>

/// <param name="item">字段名</param>

/// <returns>字段值或NULL_DATE</returns>

public DateTime GDate(string item)

{

if(m_read.IsDBNull(m_read.GetOrdinal(item)))

return NULL_DATE ;

else

return m_read.GetDateTime (m_read.GetOrdinal(item));

}

/// <summary>

/// 取得byte类型

/// </summary>

/// <param name="item">字段名</param>

/// <returns>字段值或NULL_INT</returns>

public byte GByte(string item)

{

if(m_read.IsDBNull(m_read.GetOrdinal(item)))

return NULL_INT ;

else

return m_read.GetByte (m_read.GetOrdinal(item));

}

/// <summary>

/// 取得boolean类型

/// </summary>

/// <param name="item">字段名</param>

/// <returns>字段值或NULL_INT</returns>

public bool GBool(string item)

{

if(m_read.IsDBNull(m_read.GetOrdinal(item)))

return false ;

else

return m_read.GetBoolean( m_read.GetOrdinal(item));//( 1 ==m_read.GetByte (m_read.GetOrdinal(item)));

}

/// <summary>

/// 取得char类型

/// </summary>

/// <param name="item">字段名</param>

/// <returns>字段值或NULL_INT</returns>

public char GChar(string item)

{

if(m_read.IsDBNull(m_read.GetOrdinal(item)))

return NULL_CHAR ;

else

return Convert.ToChar(m_read[item]);

}

/// <summary>

/// 取得Decimal类型

/// </summary>

/// <param name="item">字段名</param>

/// <returns>字段值或NULL_INT</returns>

public Decimal GDec(string item)

{

if(m_read.IsDBNull(m_read.GetOrdinal(item)))

return NULL_INT ;

else

return m_read.GetDecimal (m_read.GetOrdinal(item));

}

/// <summary>

/// 取得Guid类型

/// </summary>

/// <param name="item">字段名</param>

/// <returns>字段值或NULL_GUID</returns>

public Guid GGuid(string item)

{

if(m_read.IsDBNull(m_read.GetOrdinal(item)))

return NULL_GUID ;

else

{

return m_read.GetGuid(m_read.GetOrdinal(item));

}

}

/// <summary>

/// 取得指定read 的 字符串

/// </summary>

/// <param name="read"></param>

/// <param name="item"></param>

/// <returns></returns>

public static string GStr(SqlDataReader read,int item)

{

if(read.Read())

{

if(read.IsDBNull(item))

return null;

else

return read.GetString(item);

}

else

return null;

}

/// <summary>

/// 取得指定read 的 字符串

/// </summary>

/// <param name="read"></param>

/// <param name="item"></param>

/// <returns></returns>

public static string GStr(SqlDataReader read,string item)

{

if(read.Read())

{

if(read.IsDBNull(read.GetOrdinal(item)))

return null;

else

return read.GetString(read.GetOrdinal(item));

}

else

return null;

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有