Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用String.Format args的SQLite异常-语法错误?_C#_Sqlite_Select_Count - Fatal编程技术网

C# 使用String.Format args的SQLite异常-语法错误?

C# 使用String.Format args的SQLite异常-语法错误?,c#,sqlite,select,count,C#,Sqlite,Select,Count,这是我的第一个问题,如果我遗漏了什么或做错了什么,请原谅:) 项目 我正在编写一个.NET应用程序(Visual C#2012 Express),它使用ADO.NET System.Data.SQLite,并负责在指定文件夹中搜索SQLite数据库。之后,您可以从listview中选择一个或多个DBs,然后将其导出为HTML/CSV。在这种情况下,导出意味着: -正在读取数据库中的所有数据(表/列) -在最终导出之前删除空/空数据库 -在最终导出之前删除空/空表 -在最终导出之前删除空/空列 问

这是我的第一个问题,如果我遗漏了什么或做错了什么,请原谅:)

项目
我正在编写一个.NET应用程序(Visual C#2012 Express),它使用ADO.NET System.Data.SQLite,并负责在指定文件夹中搜索SQLite数据库。之后,您可以从listview中选择一个或多个DBs,然后将其导出为HTML/CSV。在这种情况下,导出意味着:
-正在读取数据库中的所有数据(表/列)
-在最终导出之前删除空/空数据库
-在最终导出之前删除空/空表
-在最终导出之前删除空/空列

问题
要删除空列,我对CommandText使用以下SQLite语句:

object validation = null;
query.CommandText = String.Format("SELECT COUNT({0}) FROM {1} WHERE {0} IS NOT NULL AND {0} <> '';", header, table);
validation = query.ExecuteScalar();
编辑:header和table是从字符串[]的foreach循环中收集的字符串

所以这对我来说就像是一个语法错误。如果您需要更多信息或代码,请告诉我。
但现在该怎么办呢?谁能帮我

谢谢大家!

Ben-X

当抛出异常时,
头和
表的值是多少?我添加了
Console.WriteLine(“表:“+table+”|“+”头:“+header”)
添加到我的代码中,并用我在异常发生前得到的最后一行更新了我的帖子。在该位置设置断点,在异常发生时检查SQL。还要检查异常抛出,因为它可能会提供有用的提示,而不是您发布的stacktrace。最后,您可以使用另一个工具来测试导致异常的SQL语句,以查看该语句是否是C代码的问题或其他原因。谢谢,我尝试在与sqlite-3.exe(针对Win64的sqlite ODBC驱动程序)的原始联系人中对该头使用简单的SELECT,程序显示:错误:没有这样的排序顺序:PHONEBOOK
object validation = null;
query.CommandText = String.Format("SELECT COUNT('{0}') FROM '{1}' WHERE '{0}' IS NOT NULL AND '{0}' <> '';", header, table);
validation = query.ExecuteScalar();
EDIT: Table: raw_contacts | Header: sort_key
bei System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)
bei System.Data.SQLite.SQLiteCommand.BuildNextCommand()
bei System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
bei System.Data.SQLite.SQLiteDataReader.NextResult()
bei System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
bei System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
bei System.Data.SQLite.SQLiteCommand.ExecuteScalar(CommandBehavior behavior)
bei System.Data.SQLite.SQLiteCommand.ExecuteScalar()