如何从数据库中获取表的总数? 我的代码如下:
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
}
答案 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';