上一節講到了怎樣使用ado.net來查詢數據,這節講怎么樣運行sql的select、insert和update命令及存儲過程
1、存儲過程
c#的代碼如下:
/// <summary>
/// 存儲過程參數結構
/// </summary>
public struct procparam
{
public string paramname;
public string paramvalue;
public system.data.sqldbtype paramtype ;
}
/// <summary>
/// 執行一個返回數據集的存儲過程
/// </summary>
/// <param name="strprocname">存儲過程名稱</param>
/// <param name="alparamname" >參數名稱</param>
/// <param name="alparamvalue" >參數值</param>
/// <param name="constring">數據連接串</param>
/// <returns></returns>
public static system.data.sqlclient.sqldatareader execprocedure(string strprocname,system.collections.arraylist alparamname,system.collections.arraylist alparamvalue,string constring)
{
system.data.sqlclient.sqlconnection cn=new system.data.sqlclient.sqlconnection (constring);
cn.open ();
system.data.sqlclient.sqlcommand cmd=new system.data.sqlclient. sqlcommand ();
cmd.connection =cn;
cmd.commandtype =system.data.commandtype.storedprocedure ;
cmd.commandtext =strprocname;
for(int i=0;i<alparamname.count ;i++)
{
system.data.sqlclient.sqlparameter param=new system.data.sqlclient.sqlparameter (alparamname[i].tostring (),alparamvalue[i].tostring ());
cmd.parameters.add (param);
}
system.data.sqlclient.sqldatareader dr;
dr=cmd.executereader ();
return dr;
}
上述代碼可以執行任意參數的存儲過程(返回一個數據集)
2、直接sql命令
/// <summary>
/// 執行一個返回字符串的sql script
/// </summary>
/// <param name="constring" >連接串</param>
/// <param name="sql_command" >sql命令</param>
/// <returns>返回數據集</returns>
public static string getdatastring(string sql_command,string constring)
{
system.data.sqlclient.sqlconnection cn=new system.data.sqlclient.sqlconnection (constring);
cn.open ();
system.data.sqlclient.sqlcommand cmd=new system.data.sqlclient. sqlcommand ();
cmd.connection =cn;
cmd.commandtype =system.data.commandtype.text ;
cmd.commandtext =sql_command;
string str="";
try
{
str=cmd.executescalar().tostring ();
}
catch(system.data.sqlclient.sqlexception e)
{
system.diagnostics.debug.writeline (e.message );
}
catch(exception ex)
{
system.diagnostics.debug.writeline (ex.message );
}
return str;
}
/// <summary>
/// 執行一個無返回的sql
/// </summary>
/// <param name="sql_command"></param>
/// <param name="constring"></param>
/// <returns></returns>
public static void executesql(string sql_command,string constring)
{
system.data.sqlclient.sqlconnection cn=new system.data.sqlclient.sqlconnection (constring);
cn.open ();
system.data.sqlclient.sqlcommand cmd=new system.data.sqlclient. sqlcommand ();
cmd.connection =cn;
cmd.commandtype =system.data.commandtype.text ;
cmd.commandtext =sql_command;
try
{
cmd.executenonquery ();
}
catch(system.data.sqlclient.sqlexception e)
{
system.diagnostics.debug.writeline (e.message );
}
catch(exception ex)
{
system.diagnostics.debug.writeline (ex.message );
}
}
以上代碼建議放在一個類中,如果有問題請與我聯系msn:[email protected]
新聞熱點
疑難解答
圖片精選