2

別のファイルでクラスを使用する場合、ADO.NETでパラメータを追加するにはどうすればよいですか?

クラス:

class SQLconnect
{
    public static void Sql(string Command_Text)
    {
        string connectionPath =
            "Data Source=USER\\SQLEXPRESS;Initial Catalog=db;Integrated Security=SSPI;";

        SqlConnection Connection = new SqlConnection(connectionPath);

        Connection.Open();

        SqlCommand Command = Connection.CreateCommand();
        Command.CommandText = Command_Text;
        Command.ExecuteNonQuery();

        Connection.Close();
    }
}

パラメータ:

        SQLconnect.Sql("INSERT INTO [dbo].[work] ([name],[code])VALUES(@name, @code)");

        SqlParameter param = new SqlParameter();
        param.ParameterName = "@name";
        param.Value = nameTextBox.Text;
        param.SqlDbType = SqlDbType.Text;
        //   Parameters.Add(param);


        param = new SqlParameter();
        param.ParameterName = "@code";
        param.Value = codeTextBox.Text;
        param.SqlDbType = SqlDbType.Text;
        //   Parameters.Add(param);
4

3 に答える 3

2

1 つのオプションは、一連のパラメーターを受け入れるように SqlConnect.Sql() メソッドを更新することです。

class SQLconnect
{
    public static void Sql(string Command_Text, params SqlParameter[] parameters)
    {
        string connectionPath =
            "Data Source=USER\\SQLEXPRESS;Initial Catalog=db;Integrated Security=SSPI;";

        SqlConnection Connection = new SqlConnection(connectionPath);

        Connection.Open();

        SqlCommand Command = Connection.CreateCommand();
        Command.CommandText = Command_Text;

        if(parameters != null && parameters.Length > 0) 
        {
          foreach(var p in parameters)
            Command.Parameters.Add(p);
        }


        Command.ExecuteNonQuery();

        Connection.Close();
    }
}

次に、呼び出しコードは次のようになります。

    SqlParameter param1 = new SqlParameter();
    param1.ParameterName = "@name";
    param1.Value = nameTextBox.Text;
    param1.SqlDbType = SqlDbType.Text;

    param2 = new SqlParameter();
    param2.ParameterName = "@code";
    param2.Value = codeTextBox.Text;
    param2.SqlDbType = SqlDbType.Text;

    SQLconnect.Sql("INSERT INTO [dbo].[work] ([name],[code])VALUES(@name, @code)", param1, param2);
于 2012-05-23T11:42:34.643 に答える
1

これが私のバージョンです。

public class SqlConnect
{
    public string ConnectionString { get; private set; }
    public string CommandText { get; private set; }
    public SqlParameterCollection Parameters { get; private set; }

    public SqlConnect(string connectionString, string commandText)
    {
        ConnectionString = connectionString;
        CommandText = commandText;
        Parameters = null;
    }

    public SqlConnect(string connectionString, string commandText, SqlParameterCollection parameters)
        : this(connectionString, commandText)
    {
        Parameters = parameters;
    }

    public int Execute()
    {
        using (var connection = new SqlConnection(ConnectionString))
        {
            connection.Open();
            SqlCommand command = connection.CreateCommand();
            command.CommandText = CommandText;

            foreach (var sqlParameter in Parameters)
            {
                command.Parameters.Add(sqlParameter);
            }

            int rowsAffected = command.ExecuteNonQuery();
            connection.Close();
            return rowsAffected;
        }
    }
}
于 2012-05-23T12:06:52.057 に答える
0

データベース接続用に個別のクラスを作成できます...次に、次のように各パラメーターのプロパティを作成します

public class StudDataAccess
{
    public string connectionString = "Data Source=USER\\SQLEXPRESS;Initial Catalog=db;Integrated Security=SSPI;";
    public int pStudId
    {
        set;
        get;
    }
    public string pStudName
    {
        set;
        get;
    } 
    public void NewStudent()
    {
        SqlConnection conn = new SqlConnection(connectionString);
        conn.Open();
        SqlCommand cmd = new SqlCommand("AddStudent", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@StudId", SqlDbType.Int).Value = pStudId;
        cmd.Parameters.Add("@StudName", SqlDbType.VarChar, 50).Value = pStudName;            
        cmd.Prepare();
        cmd.ExecuteNonQuery();
        conn.Close();
    }  
}

ここでは、データを挿入、選択する必要があるクラスから値を設定できるように、2 つのパラメーター id 、name を作成しました。そのクラスのオブジェクトを作成することにより、次のように

        StudDataAccess objDataAccess = new StudDataAccess();
        objDataAccess.pStudId =Convert.ToInt32(TextBox1.Text);
        objDataAccess.pStudName = TextBox2.Text;           
        objDataAccess.NewStudent(); //Call addstudent store procedure with parameters
于 2012-05-23T11:37:45.550 に答える