简体   繁体   English

如果我在单独的文件中使用连接类,ADO.NET如何添加参数?

[英]ADO.NET how to add parameter if I use connection class in a separate file?

ADO.NET how to add parameter if I use class in a separate file? 如果我在单独的文件中使用类,ADO.NET如何添加参数?

Class: 类:

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();
    }
}

Parameter: 参数:

        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);

One option would be to update your SqlConnect.Sql() method to accept a set of parameters: 一种选择是更新您的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();
    }
}

Then your calling code would be something like this: 然后,您的调用代码将如下所示:

    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);

Here is my version hope it helps 这是我的版本,希望对您有所帮助

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;
        }
    }
}

You can create a separate class for Database connection...then create a properties for each parameter like follows 您可以为数据库连接创建一个单独的类...然后为每个参数创建一个属性,如下所示

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();
    }  
}

Here we created two parameters id ,name so you can set values of it from the class where you need to insert,select data. 在这里,我们创建了两个参数id,name,因此您可以从需要插入,选择数据的类中设置它的值。 as follows by creating object of that class 通过创建该类的对象如下

        StudDataAccess objDataAccess = new StudDataAccess();
        objDataAccess.pStudId =Convert.ToInt32(TextBox1.Text);
        objDataAccess.pStudName = TextBox2.Text;           
        objDataAccess.NewStudent(); //Call addstudent store procedure with parameters

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM