Unity3d+SQLite 中表名有无双引号的区别

来源:互联网 发布:淘宝双收藏是什么意思 编辑:程序博客网 时间:2024/06/03 21:57

    SQLiteHelper.cs中查询表总行数的函数:

    public SqliteDataReader ReadTableCount(string tableName)    {        string queryString = "SELECT COUNT(*) FROM" + tableName;        return ExecuteQuery(queryString);    }

    注意:字符串tableName传到SQL中就是字符串本身,并无加双引号处理。

   下面是查询表table1总行数脚本(表名无双引号,即第12行"table1"),下面的脚本传入SQL的语句本质为SELECT COUNT(*) FROM tableName1,然而Count1的结果总是1,实际上table1有多行记录。


public class DBManager : MonoBehaviour {    public SQLiteHelper sql;    public SqliteDataReader TableCount;    public string Count = null;    public int Count1 = 0;    // Use this for initialization    void Start () {                sql = new SQLiteHelper("data source=" + Application.dataPath + "/_Data/PipeDB.db");        TableCount = sql.ReadTableCount("table1");        while (TableCount.Read())         {            for (int i = 0; i < TableCount.FieldCount; i++)            {                Count1 = TableCount.GetInt32(0);                Debug.Log(Count1);            }        }

    下面是查询表table1总行数脚本(表名含双引号,即第12行"\"table1\""),下面的脚本传入SQL的语句本质为SELECT COUNT(*) FROM “tableName1”,Count1的结果为5,也即实际上table1的记录数


public class DBManager : MonoBehaviour {    public SQLiteHelper sql;    public SqliteDataReader TableCount;    public string Count = null;    public int Count1 = 0;    // Use this for initialization    void Start () {                sql = new SQLiteHelper("data source=" + Application.dataPath + "/_Data/PipeDB.db");        TableCount = sql.ReadTableCount("\"table1\"");        while (TableCount.Read())         {            for (int i = 0; i < TableCount.FieldCount; i++)            {                Count1 = TableCount.GetInt32(i);                Debug.Log(Count1);            }        }

    总结:在Unity+sqlite中,查询表总行数时,表名要加双引号,结果才是正确的。虽然在Navicat premium中,有无双引号结果都是正确的。

原创粉丝点击