使用C#从sqlite 3数据库中检索存储在整数字段中的字符串数据

时间:2012-02-13 21:17:17

标签: c# sqlite system.data.sqlite

我有一个包含多个表的sqlite3数据库。其中一个有两个字段:s_id和user_id,第一个是整数,第二个是整数主键。 我可以使用SQLite数据浏览器观察表格内容,表格中有两行。

user_id值为1和2.

s_id值是字符串(如“user1”和“user2”),sqlite数据浏览器显示这些字符串。

我正在尝试使用System.Data.SQLite和C#中的以下代码来检索信息:

using (SQLiteConnection connection = new SQLiteConnection(string.Format(@"Data Source={0};Legacy Format=True;", path)))
{
  connection.Open();
  using (SQLiteCommand command = new SQLiteCommand("SELECT * FROM users", connection))
  {
    using (SQLiteDataReader reader = command.ExecuteReader())
    {
      while (reader.Read())
      {
       string user = reader["s_id"].ToString();
      }
    }
  }
}

我搜索了互联网,发现sqlite可以在int字段中存储字符串数据。但我无法使用C#读取这些字符串。结果始终为“0”。即使我在Watch中扩展阅读器直到我能够看到对象,其值也是0。 (对应于user_id的第二个对象具有应该具有的值,1或2)。

您知道如何在C#中检索整数字段中的字符串值吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

首先要做的事情:如果您要将 TypeX 存储在数据库列中,请不要将其声明为 TypeY ,因为可以。仅存储适当类型的值(就sqlite而言)对于独立于技术至关重要(如您所见)。

如果出于某种奇怪的原因,您无法更改数据库本身,则应在查询中强制转换值,如下所示:

SELECT CAST(s_id AS VARCHAR(255)) AS s_id FROM users;