2013-10-12 60 views
0

當通過VB.Net和MySql Data提供程序發出一個簡單的Select語句時,我找不到任何結果集返回到搜索某個希臘字符串的Mysql表。 MYSQL版本:5.5.32 VB.Net:2010無法在希臘字符串中搜索Mysql

我是否需要任何特殊的編碼來傳遞字符串?

PS:已經嘗試過的解決方案波紋管貼:

  1. 什麼編碼的β性格嗎?輸入來自哪裏?如果它是從你的控制檯,你需要確保它使用UTF-8而不是ISO-8859-1 - Pekka웃8月11'11日8:05

  2. 嘗試使用:mysql_query(「SET NAMES'utf8 「「); - 瑞文在十月12:36

我的代碼看起來像fllowing 26 '11:

Dim ds As New DataSet 
    Dim da As New MySqlClient.MySqlDataAdapter 
    Dim dt As New DataTable 
    Dim utf8Encoding As New System.Text.UTF8Encoding 

    Dim sql, st As String 
    Dim bytes() As Byte 
    Dim com As New MySql.Data.MySqlClient.MySqlCommand("SET NAMES 'utf8'", MysqlConn) 
    com.ExecuteNonQuery() 
    bytes = (Encoding.UTF8.GetBytes(TextBox2.Text)) 
    st = Encoding.UTF8.GetString(bytes) 
    sql = "Select * from Customers where name like '%" & st & "%'".ToString 

    Dim command As New MySqlClient.MySqlCommand(sql, MysqlConn) 

    da.SelectCommand = command 

    da.Fill(ds) 
    MysqlConn.Close() 

    DataGridView1.DataSource = ds.Tables(0) 

感謝名單

回答

0

在ASP.NET我從VB.NET的經驗,也有要做到這一點需要一些東西讓希臘的(如非拉丁)字符的工作:

數據庫:數據庫的整理應設置爲UTF-8。

連接字符串:確保您的連接字符串的'字符集'設置爲UTF-8。

<connectionStrings> 
    <add name="connstr" connectionString="Data Source=127.0.0.1;Database=db_name;User ID=db_user;Password=db_pass;Character Set=utf8;" providerName="MySql.Data.MySqlClient" /> 
</connectionStrings> 

代碼文件:所有的代碼文件必須以UTF-8被保存(簽字)編碼。這是所有Visual Studio文件的默認設置。請參閱here檢查它們是否保存爲UTF-8的步驟。

我猜你有一個WinForms應用程序,所以很可能你的VB文件被正確保存,因此,你的輸入是UTF-8,你不需要轉換它。

如果您的數據庫沒有將其排序規則設置爲UTF-8,那麼您需要將輸入從UTF-8轉換爲您的數據庫的編碼。

0

我不熟悉使用MySql。但是,通過UTF-8可能是問題(.NET使用UTF-16作爲字符串)。你可以嘗試這樣的:

Dim ds As New DataSet 
Dim da As New MySqlClient.MySqlDataAdapter 
Dim dt As New DataTable 

Dim sql, st As String 
sql = "Select * from Customers where name like ?name" 

Dim command As New MySqlClient.MySqlCommand(sql, MysqlConn) 
Dim theName As String = "%" & TextBox2.Text & "%" 
da.Parameters.Add("name", theName) 
da.SelectCommand = command 

da.Fill(ds) 
MysqlConn.Close() 

DataGridView1.DataSource = ds.Tables(0) 

如有必要調整線da.Parameters.Add("name", theName) - 例如它可能需要數據類型和大小。