2011-06-23 14 views
-3

バインド方法はわかりません。ありがとうございました。デフォルトのテキストボックスにデータをバインドするC#

private void LoadtxtYear() 
{ 
    DataSet ds = new DataSet(); 
    SqlConnection conn = new SqlConnection(strConn); 
    string sql = ""; 
    sql = "SELECT COCOPER FROM HR11COMP where cocode = '" + sComCode + "' order by COCPER"; 
    if (conn.State == ConnectionState.Closed) { conn.Open(); } 

    SqlDataAdapter da = new SqlDataAdapter(sql, conn); 
    da.Fill(ds, "temp"); 

    txtYear.DataBinding.Add("Text", ds.Tables["temp"], "COCPER"); 
} 
+0

を、あなたがあなた自身の質問に答えました。 –

+2

このコードでは、バインディングはあなたの心配ではありません。まず、 "using"ステートメント(IDisposableに関連するステートメント)のチェックアウトを検討する必要があります。メモリリークを避けるには、データセット、接続、およびアダプタを処分する必要があります。また、1レコードしか期待していませんか?その場合は、ExecuteScalarを使用する必要があります。つまり、コードでこれを行う予定がある場合は、テキストボックスのTextプロパティを設定するだけです。答えとしてデータアクセスのサンプルを投稿します。 –

+0

また、この種のコードではSQLインジェクションが可能です。 –

答えて

1

私はあなたがこのようなものを使用することができると思う。私には

using(SqlConnection conn = new SqlConnection(strConn)) 
     { 
      conn.Open(); 
      using (SqlCommand cmd = conn.CreateCommand()) 
      { 
       cmd.CommandText = "SELECT COCOPER FROM HR11COMP where cocode = @sComCode order by COCPER"; 
       cmd.CommandType = CommandType.Text; 
       cmd.Parameters.Add(new SqlParameter("@sComCode", sComCode)); 

       object cocoper = cmd.ExecuteScalar(); 

       if (cocoper != null) 
        txtYear.DataBinding.Add("Text", cocoper.ToString(), "COCPER"); 
      } 
     } 
関連する問題