2014-06-09 46 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。