【问题标题】:Storing "String" as "TEXT" instead of "VarChar" in SQLite - WP8在 SQLite 中将“String”存储为“TEXT”而不是“VarChar” - 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 所以你不用担心!

标签: c# sql sqlite windows-phone-8


【解决方案1】:

varcharTEXTSQLite 所以你不用担心!

在内部,数据总是以 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中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 类型不同。

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 2022-01-05
      • 2012-07-11
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多