我有一个包含多个表的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#中检索整数字段中的字符串值吗?
谢谢。
答案 0 :(得分:3)
首先要做的事情:如果您要将 TypeX 存储在数据库列中,请不要将其声明为 TypeY ,因为可以。仅存储适当类型的值(就sqlite而言)对于独立于技术至关重要(如您所见)。
如果出于某种奇怪的原因,您无法更改数据库本身,则应在查询中强制转换值,如下所示:
SELECT CAST(s_id AS VARCHAR(255)) AS s_id FROM users;