我有一个带几个表的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#中检索此整数字段中的字符串值吗?
谢谢.
解决方法:
首先,第一件事:如果要将TypeX存储在数据库列中,请勿仅仅因为可以就将其声明为TypeY.对于技术独立性(如您所见),仅存储适当类型的值(就sqlite而言)是必不可少的.
如果由于某种奇怪的原因而无法更改数据库本身,则应在查询中强制转换值,如下所示:
SELECT CAST(s_id AS VARCHAR(255)) AS s_id FROM users;
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!