欢迎光临
我们一直在努力

数据库通用连接类-.NET教程,数据库应用

建站超值云服务器,限时71元/月

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

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 数据库通用连接类-.NET教程,数据库应用
分享到: 更多 (0)

相关推荐

  • 暂无文章