2

我有一个像这样的方法:

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”。不幸的是,我不知道如何“构造”所需的 sqlparameters 以及稍后如何将信息传递给它们“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

4 回答 4

0

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

 SetDataSet(sqlString, param1, param2, param3, ..., paramN);
于 2012-11-11T19:57:39.787 回答
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参数数量。

于 2012-11-11T20:55:24.047 回答
0

您需要创建 SQL 参数吗?

像这样:

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

如果您认为您正在使用某种通用方法来处理所有数据库内容,那么您最终将创建一个新层,但无法避免访问数据库的具体细节。

于 2012-11-11T20:00:54.940 回答
0

您需要创建 SQL 参数吗?

像这样:

SqlParameter sqlP1= new SqlParameter("Id", SqlDbType.Int);
sqlP1.Value = 200;
于 2012-11-11T20:33:10.603 回答