2014-06-09 43 views
0

我有一個奇怪的問題。我嘗試在SQLite表上運行查詢,但它不返回內容,它返回「System.Byte []」。 此代碼運行查詢和應該得到的「文本」行內容:C#SQLite查詢不返回

string q = "SELECT text FROM leiras WHERE(id=" + this.id + ");"; 
    DataTable dt = s.executeNormalQuery(q); 
    DataRow dr = dt.Rows[0]; 
    string content = dr[0].ToString(); 

這是s.executeNormalQuery(查詢字符串):

DataTable dt = new DataTable(); 

    try 
    { 
     SQLiteConnection con = new SQLiteConnection(this.conURL); 
     con.Open(); 
     SQLiteCommand com = new SQLiteCommand(query, con); 
     SQLiteDataReader read = com.ExecuteReader(); 
     dt.Load(read); 
     read.Close(); 
     con.Close(); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e.StackTrace); 
    } 

    return dt; 

而在「文本」細胞表包含

cg0ovnP0w6XyBKxLQq6XaZpxAPw/lHlSx/fRjZSdmuU= 

as blob。

+2

它返回一個'byte []',因爲該字段被存儲爲一個blob。要轉換它,你必須知道內容是什麼(例如XML)。 –

+0

根據您使用的編碼(UTF8,ASCII ...),您可以使用System.Text.Encoding類將字節數組轉換爲字符串。 – Stonehead

+0

我試着對它進行foreach,但它仍然打印「System.Byte []」。我不知道文本的原始編碼是什麼,我只知道文本是使用AES進行BASE64編碼和加密的。內容是「cg0ovnP0w6XyBKxLQq6XaZpxAPw/lHlSx/fRjZSdmuU =」 – KriszDev

回答

0

確定由於我發現它:

byte[] cont = (byte[]) dr[0]; 
    string decodedString = System.Text.Encoding.UTF8.GetString(cont); 
    Console.WriteLine(decodedString); 

首先鑄造的DataRow 0到字節[]然後編碼爲UTF-8。