Sqlparameters - 将它们传递给方法

时间:2012-11-11 19:52:51

标签: c# sql methods parameters

我有一个像这样的方法:

private void SetDataSet(string sqlString, params SqlParameter[] parameters)
    {
        DataSet ds = new DataSet();
        using (SqlConnection conn = new SqlConnection(cs))     
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = conn;
                //cmd.CommandType = CommandType.
                cmd.CommandText = sqlString;

                if (parameters != null)
                {
                    foreach (SqlParameter parm in parameters)
                    {
                        cmd.Parameters.Add(parm);
                    }
                }

                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                {
                     cmd.ExecuteScalar();
                }
            }
        }

    }

现在,从另一个名为testMethod的方法中,我想调用" SetDataSet"所有需要的论点。不幸的是,我不知道如何构建"所需的sql参数以及后来如何传递信息" SetDataSet"方法

private void testMethod()
{
  string sqlString = .... .

  //here should be the code, which will create sql parameters

  //and now we call the SetDataSet with all needed arguments:
  SetDataSet(sqlString, ?!);
}

我正在考虑某种循环,它可以在testMethod中创建sqlparameters数组(?),然后将它传递给SetDataSet方法,但是不知道如何随之而来。

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

您所要做的就是提供参数。 params参数将自动创建数组。

 SetDataSet(sqlString, param1, param2, param3, ..., paramN);

答案 1 :(得分:0)

您需要创建SQL参数吗?

像这样:

SqlParameter SqlParm = new SqlParameter("ID", SqlDbType.Int);
SqlParm.Value = 100;

如果您认为自己正在采用某种通用方式来完成所有数据库工作,那么最终将创建一个新层,但不会避免访问数据库的细节。

答案 2 :(得分:0)

您需要创建SQL参数吗?

像这样:

SqlParameter sqlP1= new SqlParameter("Id", SqlDbType.Int);
sqlP1.Value = 200;

答案 3 :(得分:0)

所以你要做的就是这样:

private void testMethod() 
{
    string sqlString = .....

    //here should be the code, which will create sql parameters

    // An varchar(80) parameter called @Name with the value "Chuck".
    SqlParameter paramName = new SqlParameter("@Name", SqlDbType.VarChar, 80);
    paramName.Value = "Chuck";

    // An int parameter called @Age with the value 49.
    SqlParameter paramAge = new SqlParameter("@Age", SqlDbType.Int);
    paramAge.Value = 49;

    // Create more parameters here, as many as you want.
    // You could also create a SqlParameter[] array and send in instead.

    //and now we call the SetDataSet with all needed arguments:
    SetDataSet(sqlString, paramName, paramAge); // just add all parameters one after another.
}

由于您在params中使用SetDataSet(string sqlString, params SqlParameter[] parameters)参数,因此可以在sqlString参数后添加零或您需要的参数数量。