广义ADO.Net功能

时间:2012-02-10 05:04:15

标签: c# ado.net

我想在c#.net中使用一个genralised方法,它连接到sql server Db并执行程序。

目前我确实有一种方法可以胜任这项工作。

private boolean SetRecord(string strDb,string strSproc, string strParams)
{
string strConnect;
SqlConnection sqlConn = new SqlConnection();
SqlCommand sqlCmd;

try
{
    strConnect = GetDBConnStr(strDB).ToString();
    sqlConn.ConnectionString = strConnect;
    sqlCmd = new SqlCommand();

    sqlCmd.Connection = sqlConn;
    sqlCmd.CommandText = GetSprocNm(strDB, strSproc) + " " + strParams;
    sqlCmd.CommandType = CommandType.Text;

    sqlCmd.Connection.Open();
    sqlCmd.ExecuteNonQuery();

    sqlCmd.Connection.Close();
    sqlConn.Close();

    return true;
  }
  catch (Exception e)
  {
   ExceptionManager.Publish(e);
   throw (e);
  }
  finally
  {
   if (sqlConn.State == ConnectionState.Open)
   sqlConn.Close();
   sqlAdpt.Dispose();
  }
}

这里,多个参数以逗号分隔的格式在单引号中显示。例: 如果参数值为1,则a和abc然后strParams包含 ' 1''一个'' ABC'

现在,问题是我需要不是输出参数的过程的返回值。我知道这可以将sqlparameter方向设置为返回值,但这不起作用。

注意:SQLserver db中有许多具有不同数据类型的参数数量的过程。

示例SP:

CREATE Procedure prc_Add
(
 @Name VARCHAR(80) = NULL,
 @Desc VARCHAR(255) = NULL
)
AS
IF EXISTS( SELECT 1 FROM tbl WHERE name = @Name )
BEGIN
RETURN 22
END

/*
* Everything is OK, so add
*/
INSERT INTO tbl
(
 name,
 desc
)
VALUES
(
 @Name,
 @Desc
)

SELECT idn FROM tbl WHERE name = @Name
RETURN 0

有许多此类程序具有不同数量和数据类型的参数。

0 个答案:

没有答案