簡體   English   中英

SQLite 返回錯誤的字符串值 C#

[英]SQLite return wrong string value C#

我有一些值的本地sqlite db。 我有“字符串”類型的“名稱”和“描述”列。 在此列單元格中可以是“32145152174524132151421”之類的值。 當我嘗試使用 System.Data.SQLite 庫獲取值時,在任何情況下使用 reader.GetValue().toString() 或 reader.GetString() 時,我都會得到類似“32321541e+35”或 InvalidCast 異常的值,但 DB 存儲正常值。

SQLite 和他在 CastValues 方面的問題簡直要了我的命。 有人能幫我嗎?

“Zakupki_name”和“Zakupki_description”具有“字符串”數據類型。

我寫的最后沒有點,但在 DB 中它用點保存。

“Zakupki_name”保存在數據庫中 - 12323141276876900118036480。按代碼返回 - 1.23231412768769e+25

“Zakupki_description”保存在數據庫中 - 123444441521613002768384。按代碼返回 - 1.23444441521613e+23

從數據庫中獲取數據的代碼。

 SQLiteCommand command = new SQLiteCommand(@"SELECT Zakupki_id,
                                                       Zakupki_name,
                                                       Zakupki_description,
                                                       Zakupki_update_date,
                                                       Zakupki_value_limit
                                                       FROM Zakupki;",connection);
            SQLiteDataReader reader = command.ExecuteReader();
            int rowCount = GetRowCount(Tables.Zakupki);
            if (rowCount != 0)
            {
                zakupkis = new List<Zakupki>();
                while (reader.Read())
                {
                    zakupkis.Add(new Zakupki(reader.GetInt32(0), reader.GetValue(1).ToString(), reader.GetValue(2).ToString(), DateTime.Parse(reader.GetString(3)), double.Parse(reader.GetValue(4).ToString())));
                }
            }

將值插入數據庫的代碼。

public void InsertZakupku(string name, string description,double value_limit)
        {
            //Добавить закупку
            try
            {
                createConnection();
                SQLiteCommand command = new SQLiteCommand(string.Format(@"INSERT INTO Zakupki (
                                                                    Zakupki_name,
                                                                    Zakupki_description,
                                                                    Zakupki_update_date,
                                                                    Zakupki_value_limit)
                                                                    VALUES ('{0}','{1}','{2}','{3}');", name, description, DateTime.Now, value_limit), connection);
                command.ExecuteNonQuery();
                closeConnection();
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                closeConnection();
            }

使用方法插入值。

sQLiteClient.InsertZakupku(zakupkiName.Text, zakupkiDescription.Text, double.Parse(zakupkiValue.Text));

通過使用varchar(255)而不是stringtext解決了這個問題

暫無
暫無

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

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