[英]ADO.NET how to add parameter if I use connection class in a separate file?
如果我在單獨的文件中使用類,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);
一種選擇是更新您的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);
這是我的版本,希望對您有所幫助
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;
}
}
}
您可以為數據庫連接創建一個單獨的類...然后為每個參數創建一個屬性,如下所示
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();
}
}
在這里,我們創建了兩個參數id,name,因此您可以從需要插入,選擇數據的類中設置它的值。 通過創建該類的對象如下
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.