2016-08-19 1 views
-3
public string InsertStudent(Student student) 
{ 
    string message = ""; 
    SqlConnection connection = new SqlConnection(connectionString); 

    string query = "insert into Students values(@regNo, @name, @email, @departmentId)"; 

    SqlCommand command = new SqlCommand(query, connection); 
    command.Parameters.Clear(); 

    command.Parameters.Add("regNo", SqlDbType.VarChar, 50).Value = student.RegNo; 

    //////////////////or////////////// 
    command.Parameters.Add("name", SqlDbType.VarChar); 
    command.Parameters["name"].Value = student.Name; 

    command.Parameters.Add("email", SqlDbType.VarChar); 
    command.Parameters["email"].Value = student.Email; 

    command.Parameters.Add("departmentId", SqlDbType.Int); 
    command.Parameters["departmentId"].Value = student.DepartmentId; 

    connection.Open(); 
    int rowAffected = command.ExecuteNonQuery(); 
    connection.Close(); 
} 

내 질문 : 나는매개 변수가있는 SqlCommand는 어떻게 작동합니까?

command.ExecuteNonQuery() 

또는

command.ExecuteReader() 

방법 명령 참조 새로 만든 SqlParameter 객체의 참조 또는 메모리 위치를 찾을 수를 쓸 때?

힙 메모리와 스택 메모리에서 이러한 개체 및 참조의 참조 그림을 그릴 수 있습니까? 아마 내 대답은 다음 이미지입니다

는 :

enter image description here

+2

설명서를 검색하셨습니까? – astidham2003

+0

매개 변수를 추가하는 다양한 방법으로 전혀 차이가 있다고 생각하게 만드는 요인은 무엇입니까? 컴파일러가 완성 될 즈음에 그들은 어쨌든 모두 같은 결과를 낼 수있는 것처럼 보입니다. 그리고 당신은 정말로 내가 그림을 그리기를 원하지 않습니다. – stuartd

+0

정말 호기심을 느끼면 .NET 반사경을 사용하여 IL을 볼 수 있습니다. – reggaeguitar

답변

-2

몇 가지 방법이 있습니다.

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx

다음 예는 매개 변수를하는 SqlCommand를 만들고 추가하는 방법을 보여줍니다 :

private static void UpdateDemographics(Int32 customerID, 
    string demoXml, string connectionString) 
{ 
    // Update the demographics for a store, which is stored 
    // in an xml column. 
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics " 
     + "WHERE CustomerID = @ID;"; 

    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     SqlCommand command = new SqlCommand(commandText, connection); 
     command.Parameters.Add("@ID", SqlDbType.Int); 
     command.Parameters["@ID"].Value = customerID; 

     // Use AddWithValue to assign Demographics. 
     // SQL Server will implicitly convert strings into XML. 
     command.Parameters.AddWithValue("@demographics", demoXml); 

     try 
     { 
      connection.Open(); 
      Int32 rowsAffected = command.ExecuteNonQuery(); 
      Console.WriteLine("RowsAffected: {0}", rowsAffected); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 
} 
+2

링크가 바뀔 수 있기 때문에 링크 만 대답하는 것은 권장되지 않습니다. – reggaeguitar

1

매개 변수는 command.Parameters에 저장됩니다 이 링크를 참조하십시오. 이 명령은 해당 콜렉션을 사용하여 모든 매개 변수를 열거하고 전 송합니다.

관련 문제