SQLite C# System.Data.SQLite.SQLiteException - PullRequest
       16

SQLite C# System.Data.SQLite.SQLiteException

0 голосов
/ 19 апреля 2020

Я хочу вставить данные в базу данных через sqlite, но каждый раз, когда я получаю сообщение об ошибке ниже:

Соединение установлено успешно ...

code = Error (1), message = System.Data.SQLite.SQLiteException (0x800007BF): SQL logi c ошибка около "hpi_caseid": синтаксическая ошибка в System.Data.SQLite.SQLite3.Prepare (SQLiteConnection cnn, String str Sql, SQLiteStatement предыдущая , UInt32 timeoutMS, String & strRemain) в System.Data.SQLite.SQLiteCommand.BuildNextCommand () в System.Data.SQLite.SQLiteCommand.GetStatement (Int32 index) в System.Data.SQLite.SQLiteDataReader.NextResult () в System.Data. SQLite.SQLiteDataReader..ctor (SQLiteCommand cmd, поведение CommandBehavior) в System.Data.SQLite.SQLiteCommand.ExecuteReader (поведение CommandBehavior) в System.Data.SQLite.SQLiteCommand.ExecuteNonQuery (поведение CommandBehavior) в System.Data.SQLite. ExecuteNonQuery ()
в Dapper.SqlMapper.ExecuteCommand (IDbConnection cnn, CommandDefinition & command, действие 2 в год ramReader) в Dapper.SqlMapper.ExecuteImpl (IDbConnection cnn, CommandDefinition & command) в Dapper.SqlMapper.Execute (IDbConnection cnn, String sql, объектный параметр, транзакция IDbTransaction, команда Nullable`1 commandTimeout, аргумент-аргумент 1-го типа. SaveCase (CaseModel CasesData) в C: \ Users \ mansourm \ Documents \ Visual Studio 2015 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ SqliteDataAccess.cs: строка 29 в ConsoleApplication1.Program.test () в C: \ Users \ mansourm \ Documents \ Visual Studio 2015 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Program.cs: строка 249

namespace ConsoleApplication1
{
    public class SqliteDataAccess
    {
        public static void SaveCase(CaseModel CasesData)
        {
            using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
            {
                cnn.Execute("INSERT INTO CasesData hpi_caseid VALUES @hpi_caseid", CasesData);
            }
        }

        private static string LoadConnectionString(string id = "Default")
        {
            return ConfigurationManager.ConnectionStrings[id].ConnectionString;
        }
    }
}



foreach (var c in ec.Entities)
{

    var newCase = new CaseModel();

    if (c.Attributes.Contains("hpi_caseid")) //Case ID
        newCase.hpi_caseid = Convert.ToInt64(c.Attributes["hpi_caseid"]);


    SqliteDataAccess.SaveCase(newCase);

}


public class CaseModel
{

    public long hpi_caseid;
}

// App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="Default" connectionString="Data Source=C:\Users\mansourm\Documents\Visual Studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\hptest.db; Version=3;" providerName="System.Data.SqlClient"/>
  </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

Data Base screenshot

Я пробовал и с относительным путем, но я получил ту же ошибку.

Заранее спасибо!

1 Ответ

1 голос
/ 19 апреля 2020

Кажется, вы пропустили скобки после имени таблицы и после ключевого слова Values, то есть около hpi_caseid и @hpi_caseid:

cnn.Execute("INSERT INTO CasesData (hpi_caseid) VALUES (@hpi_caseid)", CasesData);

Также вы объявили параметр, но не сделали Чтобы указать его значение, вам нужно указать что-то вроде этого

yourCommand.Parameters.Add(new SqliteParameter("@hpi_caseid", yourValue));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...