2016-09-13 69 views
-5

我使用Visual Studio社區2015年,我使用MySQL連接器(MySQL for Visual Studio)將我的MySQL數據庫連接到Visual Studio,這部分已經完成,並且我已將Visual Studio連接到數據庫。如何運行C#查詢?

現在我想知道下一步從數據庫中獲取(使用select查詢)數據到我的表單程序是什麼?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace Test_1 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     // How can i get data from the database in here ? 
    } 
} 
} 

我得到了我的答案!檢查最佳答案。

+2

這看起來像C#/ CLI,而不是C++。 – NathanOliver

+0

@NathanOliver我的錯誤,我的意思是C#對不起 – Soheyl

+0

我知道你打算先把這個完全相同的問題輸入到Google中,找到一些可以嘗試的東西,並且只在這裏問你是否遇到了特定的問題。我們在這裏提供幫助,但你必須幫助自己。 –

回答

0

我有我的回答是:

MySqlConnection sqlConnection1 = new MySqlConnection("server=server;uid=username;" + "pwd=password;database=database;"); 
MySqlCommand cmd = new MySqlCommand(); 
MySqlDataReader reader; 

cmd.CommandText = "SELECT * FROM table"; 
cmd.CommandType = CommandType.Text; 
cmd.Connection = sqlConnection1; 

sqlConnection1.Open(); 
reader = cmd.ExecuteReader(); 

try 
{ 
reader.Read(); 
value = reader.GetString(x); 
} 
finally 
{ 
reader.Close(); 
} 
1

我必須跑一段時間,所以我會帶你走過一個字,你已經嘗試了一些東西,併發布這個,希望它可以幫助你(很高興看到你已經做了什麼來了解如何來幫你)。

你說你有連接工作。以下是一些基本查詢的例子。要記住的最重要的事情是有很多不同的方式來做到這一點,所以這些只是作爲例子。他們都是手動的 - 爲了自動幫助數據綁定,你必須發佈並詢問。

請學習如何做 - 確保你總是使用參數,不要做像「UPDATE myUserData set DRIVER_LICENSE ='U7439821'WHERE LAST_NAME ='Smith'」這樣的事情。如果你這樣做,你正在乞求糟糕的事情發生在你身上。多花30秒鐘使用command.Parameter.Add(,)。

最後,這些示例適用於MS-SQL Server。您需要將連接從SqlConnection更改爲MySqlConnection,並從SQLCommand更改爲MySqlCommand。

如果您有任何其他問題,請詢問。

//these are connection methods that help connect you to your database manually. 
public SqlConnection getConn() 
    { 
     return new SqlConnection(getConnString()); 
    } 
    public string getConnString() 
    { 
     return @"Data Source=lily.arvixe.com;Initial Catalog={My_Database_Name};Persist Security Info=True;User ID={My_Database_Username};Password={My_Database_Password};Connection Timeout=7000"; 
    } 

    //to get a single value from a single field: 
    public object scalar(string sql) 
    { 
     object ret; 
     using (SqlConnection conn = getConn()) 
     { 
      conn.Open(); 
      using (SqlCommand com = conn.CreateCommand()) 
      { 
       com.CommandText = sql; 
       ret = com.ExecuteScalar(); 
      } 
      conn.Close(); 

     } 
     return ret; 
    } 
    //To do a SELECT with multiple rows returned 
    private List<string> get_Column_Names(string tableName) 
    { 
     List<string> ret = new List<string>(); 
     using (SqlConnection conn = getConn()) 
     { 
      conn.Open(); 
      using(SqlCommand com = conn.CreateCommand()) 
      { 
       com.CommandText = "select column_Name from INFORMATION_SCHEMA.COLUMNS where table_Name = '" + tableName + "'"; 
       com.CommandTimeout = 600; 
       SqlDataReader read = com.ExecuteReader(); 
       while (read.Read()) 
       { 
        ret.Add(Convert.ToString(read[0])); 
       } 
      } 
      conn.Close(); 
     } 
     return ret; 
    } 
    // to do an INSERT or UPDATE or anything that does not return data 
    // USE PARAMETERS if people go anywhere near this data 
    public void nonQuery(string sql) 
    { 
     using(SqlConnection conn = getConn()) 
     { 
      conn.Open(); 
      using(SqlCommand com = conn.CreateCommand()) 
      { 
       com.CommandText = sql; 
       com.CommandTimeout = 5900; 
       com.ExecuteNonQuery(); 
      } 
      conn.Close(); 

     } 

    } 
    //to save a DataTable manually: 
    public void saveDataTable(string tableName, DataTable table) 
    { 
     using (SqlConnection conn = getConn()) 
     { 
      conn.Open(); 
      using (var bulkCopy = new SqlBulkCopy(conn))//, SqlBulkCopyOptions.KeepIdentity)) 
      { 

       // my DataTable column names match my SQL Column names, so I simply made this loop. However if your column names don't match, just pass in which datatable name matches the SQL column name in Column Mappings 
       foreach (DataColumn col in table.Columns) 
       { 
        bulkCopy.ColumnMappings.Add(col.ColumnName, "[" + col.ColumnName + "]"); 

       } 
       bulkCopy.BulkCopyTimeout = 8000; 
       bulkCopy.DestinationTableName = tableName; 
       bulkCopy.BatchSize = 10000; 
       bulkCopy.EnableStreaming = true; 
       // bulkCopy.SqlRowsCopied += BulkCopy_SqlRowsCopied; 
       //bulkCopy.NotifyAfter = 10000; 
       //isCopyInProgess = true; 
       bulkCopy.WriteToServer(table); 
      } 
      conn.Close(); 
     } 
    } 

再次,有很多方法可以以編程方式完成這些任務 - 我只是向您展示最基本的。如果您想了解如何自動將控件綁定到數據,請嘗試搜索「C-sharp Databind CONTROL_NAME Visual Studio」,您應該獲得所需的所有幫助。

+0

好的 - 這些應該可以幫到你。當使用Reader時,需要將每個字段的數據類型轉換爲其預期的實際數據類型(我給出的例子是另一個只需要返回字符串的SO問題,另外,我沒有使用任何TRY/CATCH/FINALLY爲了保持簡單,所以如果出現錯誤,這將會拋出一個異常。在你弄清楚基本知識之後,返回並添加錯誤處理。 –

+0

謝謝,我需要一些時間來弄明白:D但是thx :) – Soheyl