저는 C#과 매개 변수를 SQL로 전달하는 것에 익숙하지만 구현하는 것이 중요하다는 것을 알고 있습니다.SQL Server에서 매개 변수와 함수를 모두 사용하는 방법?
시나리오는 다음과 같습니다
이미 시스템에 내장 된 기능을 가지고 있지만에게 전달하는 매개 변수를 사용할 수 있도록하기 위해 편집하는 방법을 모르겠어요. 내 기능은 INSERT 또는 UPDATE를 통해 편집 할 수
은 다음과 같습니다 내 기능을 사용하기
namespace SQLFunc
{
class SQLClass
{
public void SQLEdit(string var_SQLCommand)
{
using (SqlConnection myConn = new SqlConnection(this.SQLConnectString))
using (SqlCommand var_command = new SqlCommand(var_SQLCommand, myConn))
{
myConn.Open();
try
{
var_command.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show("An error occurred: " + ex.Message + " using SQL Query: " + var_SQLCommand, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
myConn.Close();
}
}
}
...
내 일반적인 명령은 다음과 같습니다
: 매개 변수를 사용하여using SQLFunc.SQLClass
....
//command to variable
var_Command = "UPDATE tbl_Table SET fld_Active = 'YES' WHERE fld_IDNo = " + var_A;
//execute function
var_SQLClass.SQLEdit(var_Command);
, 난 코드를 가고 싶어
using SQLFunc.SQLClass
....
//command to variable
var_Command = "UPDATE tbl_Table SET fld_Active = 'YES' WHERE fld_IDNo = @var_A_";
// need to pass this entire line after the SQLCommand in the function SQLEdit
var_Command.Parameters.AddWithValue("var_A_", var_A);
var_SQLClass.SQLEdit(var_Command);
필자는 함수 전달 매개 변수를 활용할 수 있기를 원했습니다. 변수 var_A를 전달할 수 있지만 필드 수가 변경 될 때마다 함수 코드를 변경하지 않고도 한 필드 (업데이트 또는 삽입) 또는 10 필드 (업데이트 또는 삽입)에 대해 작동해야하는 것처럼 적응성을 만족시키기 위해 내 코드를 원했습니다.
달성 가능합니까? 그렇다면 어떻게?
SQLParameters 컬렉션을 만들어 함수에 전달할 수 있습니다. 함수를 호출하려면 다음과 같습니다. var_SQLClass.SQLEdit (var_Command, var_Parameters); 함수 내부에서 var_Command.Parameters.Add() 오버로드를 사용하여 콜렉션을 추가하십시오. – andrewb
당신은 당신의 UPDATE 명령에서'fldIDNo'를 제외하고 다른 필드를 가질 수 있습니까? 아니면 @var_A_에 대해 여러 값을 전달할 수 있다고 말하는 것입니까? – Edper
@ andrew-buchan 당신은 배열과 같은 뜻인가요? –