2014-09-29 13 views
-1

鑑於以下代碼如何在C#中將MYSQL查詢的結果導入文本框?我試了幾個小時才弄明白 - 我猜應該很容易。以下是代碼嘗試。使用PHP程序來BTW我真的與MySQL和C#的掙扎,我應該使用不同的代碼?:如何將MYSQL查詢放入文本框?

... 
using MySql.Data.MySqlClient; 

namespace houseDB1 
{ 
    public partial class Form2 : Form 
    { 
     private string server; 
     private string database; 
     private string uid; 
     private string password; 
     private MySqlConnection connection; 



     public Form2(string strTextBox) 
     { 
      InitializeComponent(); 
      // richTextBox1.Text = strTextBox; 
      int num = int.Parse(strTextBox); 



      server = "localhost"; 
      database = "realestate_db"; 
      uid = "root"; 
      password = ""; 
      string connectionString; 
      connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 

      connection = new MySqlConnection(connectionString); 
      connection.Open(); 
      MySqlDataAdapter mySqlDataAdapter; 
      mySqlDataAdapter = new MySqlDataAdapter("SELECT `ID`, `lat` , `long` FROM `house` ", connection); 
      DataSet DS = new DataSet(); 
      mySqlDataAdapter.Fill(DS); 

      richTextBox1.Text = DS.Tables[0].ToString(); // doesn't work 

     } 

... 
+0

你確認'Tables [0]'有你想要的數據嗎?如果是這樣,那麼你就近了。有多行嗎?爲什麼要在單個RichTextBox vs網格中顯示所有數據?無論如何,'Tables [0] .ToString()'不是獲取數據的方式,但它有助於首先回答其他問題。 – 2014-09-29 23:40:42

回答

1

有你使用一個TextBox一個特別的原因?一個GridView將是正常的方法。

例如,你可以這樣做:

MySqlConnection conn = new MySqlConnection(connectionString); 
MySqlCommand cmd = new MySqlCommand("SELECT `ID`, `lat` , `long` FROM `house`;", conn); 
conn.Open(); 
DataTable dataTable = new DataTable(); 
MySqlDataAdapter da = new MySqlDataAdapter(cmd); 

da.Fill(dataTable); 


GridVIew.DataSource = dataTable; 
GridVIew.DataBind(); 
+1

鏈接只有答案皺起了眉頭。如果該頁面是重複的,則將其標記爲這樣。如果不是,請將相關位發佈給您的答案。 – paqogomez 2014-09-29 23:44:26

+0

@paqogomez,感謝您的信息,我已經更新了我的答案。 – 2014-09-29 23:57:07

0
DS.Tables[0].Rows[0][0].ToString();// gets the first row, first cell 

所以你需要循環表,以填補文本框:從做

string myRichTextTB = ""; 
for(int i=0; i< DS.Tables[0].Rows.Count; i++) 
    for(int j=0; j< 3/*number of the selected columns*/; j++) 
    { 
    myRichTextTB = myRichTextTB + DS.Tables[0].Rows[i][j].ToString(); 
    } 
0

是的,你一定要搬走你現在在做什麼......

這是一種過時的做事方式,效率低下(由於你浪費時間) ,並且如果您的查詢沒有參數化,可能會導致SQL注入攻擊。

你需要什麼叫對象關係映射(ORM) ...這是無需編寫SQL的單行線,或擔心表名或列名與數據庫通信的方式,還是列是可以空的類型。你只與你的C#對象進行交互,並且如果你願意的話,ORM會保存這些數據,它會生成你在後臺手寫的所有SQL ...

您的Customers table將由Customer對象,您的Orders table將由Order對象組成,並且您可以檢索所有給定客戶Orders,因爲'客戶'將擁有Collection<Order>屬性,您可以導航並檢索它,而無需編寫一行SQL。

那麼你怎麼做呢?

首先,你需要從安裝的NuGet實體框架(的EntityFramework是微軟一個ORM)...

這樣做的最簡單的辦法是按CTRL + Q並鍵入Package Manager並選擇第一個選項...

然後,這樣做了之後在控制檯輸入這個....

Install-Package EntityFramework 

...安裝this extension您將使用逆向工程的整個數據庫,並把它represe在你的項目中使用C#類。

相關問題