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中,有无双引号结果都是正确的。