日期:2014-05-19  浏览次数:20957 次

如何写带参数的函数(如对数据的增删改查等操作)
///   <summary>
///   插入记录
///   </summary>
///   <param   name= "connString "> 连接数据库 </param>
///   <param   name= "cmdType "> Sql语句类型 </param>
///   <param   name= "str_Sql "> Sql语句 </param>
///   <param   name= "ht "> 表示层传递过来的哈希表对象 </param>
public   static   void   Insert(string   connString,string   TableName,Hashtable   ht)
{
SqlParameter[]   Parms=new   SqlParameter[ht.Count];
IDictionaryEnumerator   et=ht.GetEnumerator();
int   i=0;
//作哈希表循环
while(et.MoveNext())
{
System.Data.SqlClient.SqlParameter   sp=Data.MakeParam( "@ "+et.Key.ToString(),et.Value.ToString());
Parms[i]=sp;//添加SqlParameter对象
i=i+1;
}
string   str_Sql=GetInsertSqlbyHt(TableName,ht);   //   获得插入sql语句
Data.ExecuteNonQuery(connString,CommandType.Text,str_Sql,Parms);

}
///   <summary>
///   执行ExecuteNonQuery
///   </summary>
///   <param   name= "connString "> 数据库连接 </param>
///   <param   name= "cmdType "> Sql语句类型 </param>
///   <param   name= "cmdText "> Sql语句 </param>
///   <param   name= "cmdParms "> Parm数组 </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))
{
conn.Open();
cmd.Connection=conn;
cmd.CommandText=cmdText;
if(cmdParms!=null)
{
foreach(SqlParameter   parm   in   cmdParms)
cmd.Parameters.Add(parm);
}
int   val=cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
conn.Close();
return   val;
}
}
如上面代码,我如何知道这个函数需要什么数据库连接呀、表呀、哈希表等等之类的参数?


------解决方案--------------------
其实上面的代码很好理解...
1.数据库连接==根据你的project来定的,你可以拉一个sqlDataAdapter 配置一下,就可以取到数据库连接了...
2,表,你可以在数据库建
3,哈希表: 上面的代码只是用哈希表取一个组参数,一般情况下是因为参数太多或是参数个数不定是使用参数数组。你可以做简单一点。
代码:

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace EIP.Class
{
class DataAccess
{
public static string connectionString = ConfigurationManager.AppSettings[ "cnnStr "];
private SqlConnection cnn = new SqlConnection(connectionString);

#region 读取DataSet
public DataSet ExecuteSql(string sqlstr)
{
//throw new System.NotImplementedException();
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(sqlstr,cnn);
try
{
cnn.Open();
adapter.Fill(ds);
}
catch (Exception ex)
{
throw new Exception( "数据读取出错! ",ex);
}