반응형
SqlCommand를 재사용하시겠습니까?
저는 이것이 가능한지 아닌지 정말 확신할 수 없습니다.
저는 현재 대학 프로젝트를 진행하고 있으며 저장 프로시저를 사용하는 기능을 가지고 있습니다.저는 같은 것을 가져갈 수 있는지 알고 싶습니다.SqlCommand업데이트된 매개 변수를 인스턴스화하고 적용하여 동일한 함수 내에서 저장 프로시저를 다시 호출합니다.
내 코드에 다음과 같은 것이 있다고 가정해 보겠습니다.
myConStr = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString;
myConn = new SqlConnection(myConStr);
myCommand = new System.Data.SqlClient.SqlCommand("team5UserCurrentBooks3", myConn);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@book_id", bookID);
myCommand.Parameters.AddWithValue("@user_id", userID);
try
{
myConn.Open();
myCommand.ExecuteNonQuery();
업데이트가 가능합니까?MyCommand의 매개 변수를 사용하여 저장 프로시저를 다시 호출하시겠습니까?
네, 제 지휘부에 연락해 주시기 바랍니다매개 변수.매개 변수를 덤프하기 위해 각 호출 사이를 지우지만 개체를 재사용하는 것을 막을 수 있는 것은 없습니다. (C#을 자주 사용하지 않기 때문에 텍스트에 오류가 한두 개 있을 수 있습니다.)
myConStr = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString;
myConn = new SqlConnection(myConStr);
myConn.Open();
myCommand = new System.Data.SqlClient.SqlCommand("team5UserCurrentBooks3", myConn);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@book_id", bookID);
myCommand.Parameters.AddWithValue("@user_id", userID);
myCommand.ExecuteNonQuery();
myCommand.Parameters.Clear();
myCommand.CommandText= "NewStoredProcedureName";
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@foo_id", fooId);
myCommand.Parameters.AddWithValue("@bar_id", barId);
mycommand.ExecuteNonQuery();
myCommand.Parameters.Clear();
myCommand.CommandText = " SELECT * FROM table1 WHERE ID = @TID;"
myCommand.CommandType = CommandType.Text;
myCommand.Parameters.AddWithValue("@tid", tId);
SqlReader rdr;
rdr = myCommand.ExecuteReader();
네! 분명히 그렇게 할 수 있습니다.함수 내에서도 동일한 연결을 다시 사용할 수 있습니다(더 큰 범위에서는 연결 개체를 다시 사용하지 않는 것이 좋지만 가능합니다).
다음과 같은 작업도 수행할 수 있습니다.
myConStr = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString;
using (var cn = new SqlConnection(myConStr) )
using (var cmd = new SqlCommand("team5UserCurrentBooks3", cn) )
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@user_id", SqlDbType.Int).Value = userID;
cmd.Parameters.Add("@book_id", SqlDbType.Int);
cn.Open();
for(int i = 0; i<10; i++)
{
cmd.Parameters["@book_id"].Value = i;
cmd.ExecuteNonQuery();
}
}
이렇게 하면 쿼리가 10번 실행되고 동일하게 사용됩니다.user_id실행될 때마다 변경합니다.book_id.그using차단은 연결이 닫혀 있는지 확인하기 위해 시도/이벤트로 연결을 감싸는 것과 같습니다.
언급URL : https://stackoverflow.com/questions/670407/reusing-sqlcommand
반응형
'programing' 카테고리의 다른 글
| Oracle ingo에 연결하는 방법 (0) | 2023.09.03 |
|---|---|
| MySQL InnoDB: 기본 키가 아닌 자동 증분 (0) | 2023.09.03 |
| 컴파일러가 이 표현식 swift 4를 유형 검사할 수 없습니까? (0) | 2023.09.03 |
| 팬더의 이동 열 데이터 프레임이 하나씩 증가합니까? (0) | 2023.09.03 |
| IntelliJ: 기호 '스프링 프레임워크'를 확인할 수 없습니다. (0) | 2023.09.03 |