C# 如何将数字字符串读取为sqlite表中的字符串
我正在我的asp.net Core 3应用程序中使用System.Data.SQLite.Core nuget包 我的表中有一个SQLite DB,假设如下:C# 如何将数字字符串读取为sqlite表中的字符串,c#,sqlite,asp.net-core,C#,Sqlite,Asp.net Core,我正在我的asp.net Core 3应用程序中使用System.Data.SQLite.Core nuget包 我的表中有一个SQLite DB,假设如下: +-----+------------+-----+ | ... | Phone | ... | +-----+------------+-----+ | --- | 0123456789 | --- | +-----+------------+-----+ | --- | 9876543210 | --- | +-----+-
+-----+------------+-----+
| ... | Phone | ... |
+-----+------------+-----+
| --- | 0123456789 | --- |
+-----+------------+-----+
| --- | 9876543210 | --- |
+-----+------------+-----+
我做一个简单的查询
command = new SQLiteCommand("SELECT * FROM Table", connection);
var reader = await command.ExecuteReaderAsync();
并在我的阅读器中获取数据。
但是,当我尝试在对象中保留值时,我可以读取并将每个值转换为它的类型,但是我不能将phone值转换为字符串(我已在数据库中将其声明为字符串),我的意思是我可以使用显式转换来转换它
var p = reader[index2];
var t = p.GetType().Name; //--> String
var myobj = new MyObj(othervalues: reader.GetString(index1), phone: (string)reader[index2]);
这是可行的,但为什么我不能这么做呢
... phone: reader.GetString(index2)...
有办法做到这一点吗
谢谢你的回答
更新:
因此,显然将列定义从
STRING
更改为TEXT
似乎可以使用reader.GetString(index)
并允许存储电话号码,如'000000000 1'
,而不删除零。好的,但如果需要这样做怎么办?myObject(guid id、字符串名称、字符串电话、int count)可能该列是可空的,并且它无法获取具有空值的特定记录。但是电话不是数字。。。如果我像'0215556545'
那样存储smt,那么当我使用GetInt64(index)
读取它时,我将得到2155556545
@AndréSanson,没有空值很高兴您找到了解决方案。感谢您的帮助