【问题标题】:C# SQLite query not returnC# SQLite 查询不返回
【发布时间】: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="

标签: c# sql .net sqlite


【解决方案1】:

好的,谢谢,我找到了:

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

首先将 DataRow 0 转换为 byte[],然后编码为 UTF-8。

【讨论】:

    猜你喜欢
    • 2017-03-27
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2014-09-27
    相关资源
    最近更新 更多