簡體   English   中英

使用C#應用程序錯誤將數據集導出到sqlite3數據庫sqlexception未處理

[英]exporting dataset to sqlite3 database using c# application errors sqlexception unhandled

我對sqlite和c#非常陌生,並嘗試使用數據集將csv文件導出到sqlite數據庫。 但我得到這個錯誤。

SQL logic error or missing database
    no such column: P17JAW  

碼:

 string strFileName = "I:/exploretest.csv";
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Path.GetDirectoryName(strFileName) + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\"");
            conn.Open();
            OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + System.IO.Path.GetFileName(strFileName), conn);
            DataSet ds = new DataSet("Temp");
            adapter.Fill(ds);

            DataTable tb = ds.Tables[0];
            SQLiteConnection m_dbConnection;
            m_dbConnection = new SQLiteConnection("Data Source= C:/Users/WebMobility.db; Version=3;");

         m_dbConnection.Open();
        var dt = ds.Tables[0];

        foreach (DataRow dr in dt.Rows)
        {
            var Id = dr["Id"].ToString();
            var VRM = dr["VehicleRegistration"].ToString();
            var Points = Convert.ToInt32(dr["TicketScore"].ToString());
            string sql = "insert into NaughtyList (Id,VRM,Points) values ( '" + Id + "'," + VRM + "," + Points + ")";
            SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
            command.ExecuteNonQuery();
        }
        m_dbConnection.Close();
    }

CSV文件包含

Id,VehicleRegistration,TicketScore
21,P17JAW,1
22,K1WOM,1
23,m4npr,4
25,G7EPS,4

您的問題是VRM缺少單引號,您的查詢應類似於:

string sql = @"insert into NaughtyList (Id,VRM,Points) values 
                       ( '" + Id + "','" + VRM + "'," + Points + ")";
                                    //^^          ^^

從值看來ID是整數類型,可以刪除ID周圍的單引號。

您應該對查詢進行參數設置,以免出現這些錯誤。 我不確定SQLiteCommand是否支持參數(如果可以),您可以執行以下操作:

string sql = @"insert into NaughtyList (Id,VRM,Points) values 
                                       (@Id,@VRM,@Points)";

接着

command.Parameters.AddWithValue("@id", Id);
command.Parameters.AddWithValue("@VRM", VRM);
command.Parameters.AddWithValue("@Points", Points);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM