SQLite从数据库中获取表的数量

时间:2014-01-20 09:07:02

标签: c# sqlite count

如何从数据库中获取表的总数? 我的代码如下:

string sDatabasePath = DBPath();
SQLiteConnectionStringBuilder datasource = new SQLiteConnectionStringBuilder();
datasource.Add("Data Source", sDatabasePath);
datasource.Add("Version", "3");
datasource.Add("New", "False");
datasource.Add("Compress", "True");             
//int nTables;
using (SQLiteConnection connection = new SQLiteConnection(datasource.ConnectionString))
{
    connection.Open(); //opens connection
    SQLiteCommand command = new SQLiteCommand("Select Count(*) FROM sqlite_master where type='table' as nTables;");
    //SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM sqlite_master where type='table'", connection);
    Int32 nTables = (Int32) comm .ExecuteScalar(); //this query raises error Specified cast is not valid.
    connection.Close(); // closes the connection
}      

3 个答案:

答案 0 :(得分:1)

ExecuteScalar()方法返回单个值。这将用于返回计算结果。比如请求COUNT。

cmd.ExecuteScalar();

返回的值是结果的Object。

您可以尝试以下方式转换为Int32

object result = cmd.ExecuteScalar();
int nTables = Convert.ToInt32(result);

答案 1 :(得分:0)

您的SQL语法存在一些问题:

Select Count(*) FROM sqlite_master where type='table' as nTables);

应该是例如。

Select Count(*) as nTables FROM sqlite_master where type='table';

as nTables放错了地方,有一个额外的)"没有被终止。最后一个可能只是发布问题的一个问题,因为那也是无效的C#语法。

此外,在询问代码问题时,在问题本身中包含特定错误总是有帮助的。

答案 2 :(得分:0)

试试这个:

SELECT COUNT(*) FROM sqlite_master WHERE type='table';