我想在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
有许多此类程序具有不同数量和数据类型的参数。