在 SQLite 中将“String”存储为“TEXT”而不是“VarChar” - WP8

Posted

技术标签:

【中文标题】在 SQLite 中将“String”存储为“TEXT”而不是“VarChar” - WP8【英文标题】:Storing "String" as "TEXT" instead of "VarChar" in SQLite - WP8 【发布时间】:2014-05-21 06:58:57 【问题描述】:

我使用 SQLite 将我的数据存储在本地数据库中。 我已经输入了几个要存储的变量。现在,当我存储该字符串变量时,它被存储为“VARCHAR”(如下图所示)。

图片1

但我想将这些字符串存储为 SQLite 中的“TEXT”类型。 (如下图)

图2

我用来存储数据库的类如下:

public class abc

    [SQLite.AutoIncrement, SQLite.PrimaryKey]
    public int _id  get; set; 
    public string a  get; set; 
    public string b  get; set; 
    public string c  get; set; 
    public string d  get; set; 
    public string e  get; set; 
    public string f  get; set; 
    public string g  get; set; 
    public DateTime date  get; set; 


任何帮助将不胜感激。

【问题讨论】:

varcharTEXTSQLite 所以你不用担心! 【参考方案1】:

varcharTEXTSQLite 所以你不用担心!

在内部,数据总是以 TEXT 形式存储,所以即使你用VARCHAR(LEN) 创建表,SQLite 也会遵循TEXT 数据类型的规则

【讨论】:

感谢您的回复,但事实并非如此。当我发布图片时,存在差异,这种差异导致在其他平台(如 androidios)中创建的数据库文件不兼容 什么不兼容? @CL 看,我们有适用于 wp、android 和 iphone 的跨平台应用程序。现在我们在每个平台上共享 SQLite 制作的公共数据库文件。在问题中,图1是WP创建的DB文件,图2是android创建的DB文件。现在,当 WP 创建的数据库文件复制到 android 设备时,数据不会显示在该设备上。这意味着 VarChar(len) 数据类型会产生问题。如果我们手动将 VarChar(len) 更改为 TEXT 类型,那么它可以工作.. 与 iphone 应用程序相同。 p.s.抱歉,解释太长了.. SQLite 本身不区分 VARCHAR 和 TEXT。 @KevalLangalia 嗨,keval,那么结论是什么? VARCHAR 是否为您工作,还是您将其全部更改为 TEXT【参考方案2】:

虽然在SQLite中TextVarchar数据类型没有区别,但是如果你想按照你想要的方式改变它,这样做:

如果您在 WP8.0 应用程序中使用 sqlite-net (SQLite.cs & SQLiteAsync.cs),则转到 SQLite.cs 类并找到 SqlType 方法(关于行1863)。然后你可以看到if (clrType == typeof(String)) 语句。如果您更喜欢Text 数据类型,那么您可以根据需要将varchar 更改为text

【讨论】:

【参考方案3】:

据我所知,Text 类型接受 UTF-8 和特殊字符符号等。它与 Varchar 类型不同。

【讨论】:

以上是关于在 SQLite 中将“String”存储为“TEXT”而不是“VarChar” - WP8的主要内容,如果未能解决你的问题,请参考以下文章

在python3中将日期值存储到sqlite表中

如何在android中将arraylist或vector插入SQLite数据库?

如何在ios中将Json数据存储到Sqlite中

在 Android 中将 Sqlite 数据库与远程服务器同步

QString和std::string转换乱码与sqlite存储汉字乱码

QString和std::string转换乱码与sqlite存储汉字乱码