Finisar.SQLite.SQLiteException:SQL逻辑错误或缺少数据库:无法识别的标记:“$”

时间:2014-09-08 20:04:43

标签: c# sql-server visual-studio-2010 sqlite

我已经用VS2012开发了一个小型的C#/ SQl应用程序,我将在余生中后悔,无论如何,我完成了调试,一切正常,这就是悲剧:没有设置发布工具。所以我尝试了单击方式和发布选项等,并且我已经包含了.NET 4框架,但是当我测试没有任何工作,安装程序说缺少框架和其他东西时,所以回到我的实验室我改变了到VS2010受益于设置能力......我做了对我来说应用程序也工作了,安装也工作并安装了应用程序。

现在我需要在另一台PC上安装该应用程序,但它没有我的服务器所以我切换到sqlite。

这里出现了关于无法识别令牌的错误,因为我从带有sql导入/导出向导的excel导入了我的数据库,并且它自动将表名写为"存档$",我无法烘焙到现在xls文件,我不知道如何在db文件中重命名它。这是我的问题。 thx帮助我。

using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
using System.IO;
using System.Data.SqlClient;
using DgvFilterPopup;
using Finisar.SQLite;

namespace ExpertGeoMaster_v._1
{
    public partial class Form1 : Form
    {
        DataTable DT = new DataTable();
        DialogResult res;

        public static string p = @"C:\Users\abdellaziz\Documents\Visual Studio 2010\Projects\ExpertGeoMaster v.1\ExpertGeoMaster v.1\bin\Debug\database.db";


        public Form1()
        {
            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e)
        {
            using (SQLiteConnection cn = new SQLiteConnection(@"Data Source=./database.db;Version=2;New=True;Compress=True;"))
            {
                this.dataGridView1.SelectionMode =
                    DataGridViewSelectionMode.FullRowSelect;
                SQLiteDataAdapter da = new SQLiteDataAdapter(@"Select * from Archive$", cn);
                try
                {
                    cn.Open();
                    da.Fill(DT);
                    this.dataGridView1.DataSource = DT;

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                cn.Close();
            }

1 个答案:

答案 0 :(得分:2)

标识符通常不允许使用$等特殊字符。

如果use quotes

,您仍然可以使用它们
new SQLiteDataAdapter(@"Select * from \"Archive$\"", cn);
new SQLiteDataAdapter(@"Select * from [Archive$]", cn);
new SQLiteDataAdapter(@"Select * from `Archive$`", cn);