【发布时间】:2014-06-09 10:29:17
【问题描述】:
我有一个奇怪的问题。我尝试在 SQLite 表上运行查询,但它不返回内容,它返回“System.Byte []”。 此代码运行查询并应获取“文本”行内容:
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=
作为blob。
【问题讨论】:
-
它返回一个
byte[],因为该字段存储为一个blob。要转换它,您必须知道内容是什么(例如 XML)。 -
您可以使用 System.Text.Encoding 类将字节数组转换为字符串,具体取决于您使用的编码(UTF8、ASCII...)。
-
我尝试 foreach 它,但它仍然打印“System.Byte[]”。我不知道文本的原始编码是什么我只知道文本是使用 AES 进行 BASE64 编码和加密的。内容为“cg0ovnP0w6XyBKxLQq6XaZpxAPw/lHlSx/fRjZSdmuU="