Вопрос:

Ошибка SQLite C #: System.Data.SQLite.SQLiteException: «Ошибка логики SQL: нераспознанный токен:« «Доход» »«

c# sql sqlite

19 просмотра

1 ответ

6 Репутация автора

В настоящее время у меня есть кусок кода, который отображает таблицу в DataGridView

            using (SQLiteConnection con = new SQLiteConnection(DBC.connectionstring))
            {
                 con.Open();
                 SQLiteDataAdapter da = new SQLiteDataAdapter("SELECT * FROM Income", con);
                 DataSet ds = new System.Data.DataSet();

                 da.Fill(ds, "Info");
                 IncomeData.DataSource = ds.Tables[0];                           
            }

Однако, потому что мне придется многократно использовать код несколько раз. Я решил создать новый класс, позволяющий мне это сделать. Как показано ниже:

public void DBLoad(string tableName, DataGridView DGVname)
    {
        DBC = new DatabaseConnection();
        DBC.getConnection() // connects to .db file

        using (SQLiteConnection con = new SQLiteConnection(DBC.connectionstring))
        {
            con.Open();
            SQLiteDataAdapter da = new SQLiteDataAdapter("SELECT * FROM '" + tableName + '"', con);
            System.Data.DataSet ds = new System.Data.DataSet();

            da.Fill(ds, "Info");
            DGVname.DataSource = ds.Tables[0];
        }
    }

Но проблема, с которой я столкнулся, заключается в том, что tableNameв запросе SQL будет присутствовать проблема, и я продолжаю сталкиваться с проблемой необходимости удалять кавычки.

Если я сделаю это:

className.DBLoad ("Доход", IncomeData);

Затем возникает следующая ошибка:

System.Data.SQLite.SQLiteException: 'Ошибка логики SQL: нераспознанный токен: "' Income" "'

Я пытался сделать:

tableName = tableName.Replace("\"", string.Empty);

Но я все еще получаю ту же ошибку. Так что теперь я не знаю, что делать.

Автор: Sonny P. Источник Размещён: 06.03.2019 05:41

Ответы (1)


1 плюс

660 Репутация автора

Насколько я знаю, вам не нужны галочки возле названия таблицы.

Галочка:

я также рекомендую использовать String.Formatследующий метод для замены имени таблицы внутри запроса:

String.Format("Select * FROM {0}",tableName);

так что эта строка кода:

SQLiteDataAdapter da = new SQLiteDataAdapter("SELECT * FROM '" + tableName + '"', con);

должно быть так:

SQLiteDataAdapter da = new SQLiteDataAdapter(String.Format("Select * FROM {0}",tableName), con);

Рекомендации :

SQLite SELECT - запрос данных из одной таблицы

Метод String.Format

Автор: Ahmad.Tr Размещён: 06.03.2019 05:51
Вопросы из категории :
32x32