在 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;
任何帮助将不胜感激。
【问题讨论】:
varchar
是TEXT
在SQLite
所以你不用担心!
【参考方案1】:
varchar
是TEXT
在SQLite
所以你不用担心!
在内部,数据总是以 TEXT 形式存储,所以即使你用VARCHAR(LEN)
创建表,SQLite 也会遵循TEXT
数据类型的规则
【讨论】:
感谢您的回复,但事实并非如此。当我发布图片时,存在差异,这种差异导致在其他平台(如 android 和 ios)中创建的数据库文件不兼容 什么不兼容? @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中Text
和Varchar
数据类型没有区别,但是如果你想按照你想要的方式改变它,这样做:
如果您在 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在android中将arraylist或vector插入SQLite数据库?
在 Android 中将 Sqlite 数据库与远程服务器同步