2017-08-14 71 views
-2

我有連接類數據庫執行查詢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(); 
    } 

} 

這將是具有的MySqlCommand實例返回,用於datatable.Load使用有用=> dt.Load(cmd.ExecuteReader());

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

你可能返回結果的IEnumerable和利用yield語句來遍歷讀取調用讀者 – 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

試試這個

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; 
    }