分享
 
 
 

数据库通用连接类

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

using System;

using System.Data ;

using System.Data.SqlClient ;

using System.Data.SqlTypes ;

using System.Windows.Forms ;

using System.Collections;

namespace Database

{

/// <summary>

/// Database 的摘要说明。

/// </summary>

public class Database

{

/// <summary>

/// 属性

/// </summary>

// public DataSet dataSet

// {

// get

// {

// return m_DataSet;

// }

//

// }

public Database()

{

//

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

//

XmlRead ConStr=new XmlRead();

if (ConStr.ReadAllConnectNode())

{

constr= ConStr.connstring ;

// try

// {

//

// Open();

// }

// catch(Exception Ex)

// {

// MessageBox.Show("数据库连接错误"+Ex.ToString () );

//

// }

}

else

{

constr="-1";

//throw new SqlErrorCollection();

}

}

// public bool Open()

// {

//

// mcn.ConnectionString = constr;

// try

// {

// mcn.Open();

//

// }

// catch( Exception)

// {

// return false;

// }

// return true;

// }

/// <summary>

/// 默认获取DataSet

/// </summary>

/// <param name="pMyTableName"></param>

/// <param name="tmpMyComputerName"></param>

/// <returns></returns>

// public virtual int getData (string pMyTableName ,string tmpMyComputerName)

// {

// return -1;

//

// }

#region ExecuteNonQuery

/// <summary>

/// 执行一个SQL Command(使用ConnectString)

/// </summary>

/// <param name="connString">ConnectString(Sql连接字符串)</param>

/// <param name="cmdType">Command类型</param>

/// <param name="cmdText">Command的语句(SQL语句)</param>

/// <param name="cmdParms">Command的参数(SqlParameter[]数组类型)</param>

/// <returns>Command的返回值(受影响的行数)</returns>

public 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>

/// 执行一个SQL Command(使用隐含的ConnectString)

/// </summary>

/// <param name="cmdType">Command类型</param>

/// <param name="cmdText">Command的语句(SQL语句)</param>

/// <param name="cmdParms">Command的参数(SqlParameter[]数组类型)</param>

/// <returns>Command的返回值(受影响的行数)</returns>

public int ExecuteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)

{

SqlCommand cmd = new SqlCommand();

using (SqlConnection conn = new SqlConnection(constr))

{

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);

int val = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

return val;

}

}

// public static int ExecuteNonQuery(string cmdText)

// {

// }

/// <summary>

/// 执行一个简单的查询, 只需要输入SQL语句, 一般用于更新或者删除

/// </summary>

/// <param name="sqlText"></param>

/// <returns></returns>

public int ExecuteNonQuery(string sqlText)

{

return ExecuteNonQuery(CommandType.Text,sqlText);

}

/// <summary>

/// 执行一个SQL Command(使用SqlTransaction)

/// </summary>

/// <param name="trans">使用的SqlTransaction</param>

/// <param name="cmdType">Command类型</param>

/// <param name="cmdText">Command的语句(SQL语句)</param>

/// <param name="cmdParms">Command的参数(SqlParameter[]数组类型)</param>

/// <returns>Command的返回值(受影响的行数)</returns>

public 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>

/// 根据指定DsCommandType类型,自动生成cmd执行dataset的更新

/// </summary>

/// <param name="connString">ConnectString(Sql连接字符串)</param>

/// <param name="cmdType">Command类型</param>

/// <param name="dsCommandType">Enum类型</param>

/// <param name="cmdText">Command的语句(SQL语句)</param>

/// <param name="dataset">dataset</param>

/// <param name="tablename">表名</param>

/// <param name="cmdParms">Command的参数(SqlParameter[]数组类型)</param>

/// <returns>是否更新成功</returns>

public bool ExecuteNonQuery(string connString,CommandType cmdType,CommandEnum.DsCommandType dsCommandType,string cmdText,DataSet dataset,string tablename,params SqlParameter[] cmdParms)

{

SqlDataAdapter dsCommand = new SqlDataAdapter();

SqlCommand cmd = new SqlCommand();

using (SqlConnection conn = new SqlConnection(connString))

{

if (conn.State != ConnectionState.Open)

conn.Open();

cmd.Connection = conn;

cmd.CommandText = cmdText;

cmd.CommandType = cmdType;

if (cmdParms != null)

{

foreach (SqlParameter parm in cmdParms)

cmd.Parameters.Add(parm);

}

switch(dsCommandType)

{

case CommandEnum.DsCommandType.InsertCommand:

dsCommand.InsertCommand = cmd;

break;

case CommandEnum.DsCommandType.UpdateCommand:

dsCommand.UpdateCommand = cmd;

break;

case CommandEnum.DsCommandType.DeleteCommand:

dsCommand.DeleteCommand = cmd;

break;

default:break;

}

dsCommand.Update(dataset,tablename);

if ( dataset.HasErrors )

{

dataset.Tables[tablename].GetErrors()[0].ClearErrors();

return false;

}

else

{

dataset.AcceptChanges();

return true;

}

}

}

/// <summary>

/// 更新一个记录集(使用connString)

/// </summary>

/// <param name="connString">ConnectString(Sql连接字符串)</param>

/// <param name="cmdInsertType">commandInsert类型</param>

/// <param name="cmdInsertText">SQL语句(Insert)</param>

/// <param name="cmdUpdateType">commandUpdate类型</param>

/// <param name="cmdUpdateText">SQL语句(Update)</param>

/// <param name="cmdInsertType">commandDelete类型</param>

/// <param name="cmdDeleteText">SQL语句(Delete)</param>

/// <param name="cmdInsertParms">InsertCommand参数</param>

/// <param name="cmdUpdateParms">UpdateCommand参数</param>

/// <param name="cmdDeleteParms">DeleteCommand参数</param>

/// <param name="dataset">dataset</param>

/// <param name="tablename">表名</param>

/// <returns>是否更新成功</returns>

public bool UpdateDataset(string connString,CommandType cmdInsertType,string cmdInsertText,CommandType cmdUpdateType,string cmdUpdateText,CommandType cmdDeleteType,string cmdDeleteText,SqlParameter[] cmdInsertParms,SqlParameter[] cmdUpdateParms,SqlParameter[] cmdDeleteParms,DataSet dataset,string tablename)

{

SqlDataAdapter dsCommand = new SqlDataAdapter();

using (SqlConnection conn = new SqlConnection(connString))

{

if (conn.State != ConnectionState.Open)

conn.Open();

if(cmdInsertText != String.Empty)

{

SqlCommand cmdInsert = new SqlCommand();

cmdInsert.Connection = conn;

cmdInsert.CommandText = cmdInsertText;

cmdInsert.CommandType = cmdInsertType;

if (cmdInsertParms != null)

{

foreach (SqlParameter parm in cmdInsertParms)

cmdInsert.Parameters.Add(parm);

}

dsCommand.InsertCommand = cmdInsert;

}

if(cmdUpdateText != String.Empty)

{

SqlCommand cmdUpdate = new SqlCommand();

cmdUpdate.Connection = conn;

cmdUpdate.CommandText = cmdUpdateText;

cmdUpdate.CommandType = cmdUpdateType;

if (cmdUpdateParms != null)

{

foreach (SqlParameter parm in cmdUpdateParms)

cmdUpdate.Parameters.Add(parm);

}

dsCommand.UpdateCommand = cmdUpdate;

}

if(cmdDeleteText != String.Empty)

{

SqlCommand cmdDelete = new SqlCommand();

cmdDelete.Connection = conn;

cmdDelete.CommandText = cmdDeleteText;

cmdDelete.CommandType = cmdDeleteType;

if (cmdDeleteParms != null)

{

foreach (SqlParameter parm in cmdDeleteParms)

cmdDelete.Parameters.Add(parm);

}

dsCommand.DeleteCommand = cmdDelete;

}

if(cmdInsertText == String.Empty && cmdUpdateText == String.Empty && cmdDeleteText == String.Empty)

{

SqlCommandBuilder scb = new SqlCommandBuilder(dsCommand);

return false;

}

dsCommand.Update(dataset,tablename);

if ( dataset.HasErrors )

{

dataset.Tables[tablename].GetErrors()[0].ClearErrors();

return false;

}

else

{

dataset.AcceptChanges();

return true;

}

}

}

#endregion

#region ExecuteReader

/// <summary>

/// 获取一个SqlDataReader(使用connString)

/// </summary>

/// <param name="connString">ConnectString</param>

/// <param name="cmdType">类型</param>

/// <param name="cmdText">Command的语句(select语句)</param>

/// <param name="cmdParms">Command的参数</param>

/// <returns>所需要的SqlDataReader</returns>

public 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>

/// 获取一个SqlDataReader(使用connString), 使用缺省的ConnectionString

/// </summary>

/// <param name="cmdType">类型</param>

/// <param name="cmdText">Command的语句(select语句)</param>

/// <param name="cmdParms">Command的参数</param>

/// <returns>SqlDataReader</returns>

public SqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)

{

SqlCommand cmd = new SqlCommand();

SqlConnection conn = new SqlConnection(constr);

try

{

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);

SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

cmd.Parameters.Clear();

return rdr;

}

catch

{

conn.Close();

throw;

}

}

/// <summary>

/// 获取一个SqlDataReader, 使用缺省的ConnectionString

/// </summary>

/// <param name="cmdtxt">语句命令</param>

/// <returns></returns>

public SqlDataReader ExecuteReader(string cmdtxt)

{

SqlCommand cmd = new SqlCommand();

SqlConnection conn = new SqlConnection(constr);

try

{

cmd=new SqlCommand(cmdtxt,conn);

conn.Open();

SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return rdr;

}

catch

{

conn.Close();

throw;

}

}

#endregion

#region private函数

/// <summary>

/// 准备一个Command(使用SqlParameter[]数组)

/// </summary>

private void PrepareCommand (SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)

{

if (conn.State != ConnectionState.Open)

{

try

{

conn.Open();

}

catch(Exception Ex)

{

throw Ex;

//string a = Ex.ToString();

//return;

}

}

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);

}

}

private void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameterCollection 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);

}

}

/// <summary>

/// 加入一个以字段名为名称的param

/// </summary>

/// <param name="fld"></param>

/// <returns></returns>

private SqlParameter NewFieldParam(string fld)

{

SqlParameter param = new SqlParameter();

param.ParameterName = "@" + fld;

param.SourceColumn = fld;

return param;

}

/// <summary>

/// 判断字符是否在一个集合中

/// </summary>

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

/// <param name="ExcludeFields"></param>

/// <returns></returns>

private bool InColleciton(string str,IList ExcludeFields)

{

foreach(string s in ExcludeFields)

{

if(s.ToUpper()==str.ToUpper())

return true;

}

return false;

}

#endregion

#region 填充DataSet

/// <summary>

/// 将数据填充到DataSet中(无connString)

/// </summary>

/// <param name="cmdType">类型</param>

/// <param name="cmdText">Command的语句</param>

/// <param name="tablename">表名</param>

/// <param name="cmdParms">Command的参数</param>

public void FillData(CommandType cmdType,string cmdText,DataSet dataset,string tablename,params SqlParameter[] cmdParms)

{

SqlDataAdapter dsCommand = new SqlDataAdapter();

SqlCommand cmd = new SqlCommand();

dsCommand.SelectCommand = cmd;

//dsCommand.TableMappings.Add("Table",tablename);

using (SqlConnection conn = new SqlConnection(constr))

{

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);

dsCommand.Fill(dataset,tablename);

}

}

/// <summary>

/// 将数据填充到DataSet中(使用connString + SqlParameterCollection)

/// </summary>

/// <param name="connString">ConnectString</param>

/// <param name="cmdType">类型</param>

/// <param name="cmdText">Command的语句</param>

/// <param name="tablename">表名</param>

/// <param name="cmdParms">Command的参数(SqlParameterCollection)</param>

public void FillDataEx(string connString, CommandType cmdType,string cmdText,DataSet dataset,string tablename,SqlParameterCollection cmdParms)

{

SqlDataAdapter dsCommand = new SqlDataAdapter();

SqlCommand cmd = new SqlCommand();

dsCommand.SelectCommand = cmd;

dsCommand.TableMappings.Add("Table",tablename);

using (SqlConnection conn = new SqlConnection(connString))

{

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);

dsCommand.Fill(dataset);

}

}

#endregion

internal string constr= null;//= "Uid =sa ;Pwd=sa ;Server = Drago;Database =Northwind";

internal SqlConnection mcn = new SqlConnection();

internal DataSet m_DataSet =new System.Data.DataSet() ;

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有