2017-08-14 20 views
-2

は、私は、DBとクエリC#のクエリ操作

public class dbConnect 
{ 
    public MySqlConnection Connection { get; set; } 
    public MySqlCommand cmd; 

....

public void Connetti() 
    { 
     try 
     { 
      if (Connection.State == ConnectionState.Closed) 
      { 
       Connection.Open(); 
      } 
     } 

     catch (Exception ex) 
     { 
      MessageBox.Show("Errore " + ex.Message); 
     } 

    } 

を実行するための接続のためのクラスを持ってどのように可能たMySqlCommand cmdを返しますか?

public void SetQuery(string sSQL) 
    { 
     MySqlCommand cmd = new MySqlCommand(sSQL, Connection); 
     //return cmd.ExecuteReader(); 
    } 

} 

はdatatable.Load => dt.Load(cmd.ExecuteReader())で使用するための、たMySqlCommandインスタンスリターンを有することが有用であろう。

public MainWindow() 
    { 
     InitializeComponent(); 

     conn.Connetti(); 

     //MySqlCommand cmd = new MySqlCommand("SELECT * FROM tb_navi Order By NOMENAVE", conn.Connection);      conn.SetQuery("SELECT * FROM tb_navi Order By NOMENAVE"); 

     System.Data.DataTable dt = new System.Data.DataTable(); 
     //dt.Load(cmd.ExecuteReader()); 
     dt.Load(conn.cmd); //now cmd is null 
     dtGrid.DataContext = dt; 

    } 
+0

をお試しください読者 – Gavin

答えて

2

戻り人口DataTableあなたの方法から:

public DataTable SetQuery(string sSQL) 
{ 
    DataTable dt = new DataTable(); 
    using (MySqlCommand cmd = new MySqlCommand(sSQL, Connection)) 
    { 
     _cmd.ExecuteNonQuery(); 

     using (MySqlDataAdapter da = new MySqlDataAdapter(cmd)) 
     { 
      da.Fill(dt); 
     } 
    } 
    return dt; 
} 
1

あなたはおそらくに対する読み取り呼び出しを反復した結果のIEnumerableをを返し、yield文を悪用する可能性があり、この

public DataTable GetTableData(string StrSQL) 
    { 
     DataTable dataTable = new DataTable(); 
     MySqlCommand mySqlCommand = null; 
     MySqlDataReader mySqlDataReader = null; 
     try 
     { 


       mySqlCommand = new MySqlCommand(StrSQL, Connection);      
       mySqlDataReader = mySqlCommand.ExecuteReader(); 
       dataTable.TableName = "mydata"; 
       dataTable.Load(mySqlDataReader);      

     } 
     finally 
     { 
      if (mySqlDataReader != null) 
      { 
       if (!mySqlDataReader.IsClosed) 
       { 
        mySqlDataReader.Close(); 
       } 
      } 
     } 
     return dataTable; 
    }