2016-08-19 5 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に格納されています。このコマンドは、そのコレクションを使用してすべてのパラメータを列挙し、ワイヤを介して送信します。

関連する問題