首页 > 解决方案 > SQLite返回错误的字符串值C#

问题描述

我有一些值的本地 SQLite DB。我有“字符串”类型的“名称”和“描述”列。

像这样的值32145152174524132151421可以插入到这些列中。

System.Data.SQLite当我使用库获取值时,在我使用reader.GetValue().toString()or的情况下reader.GetString(),我会得到类似32321541e+35or 的值 InvalidCast 异常,但数据库存储正常值。

SQLite 和它与 CastValues 的问题简直让我很生气。有人能帮我吗?

“Zakupki_name”和“Zakupki_description”列具有string数据类型。

我写的最后没有点,但在数据库中它用点保存。

“Zakupki_name”

“Zakupki_description”

从数据库中获取数据的代码。

 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())));
    }
}

将值插入到 db 的代码。

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));

标签: c#sqlitesystem.data.sqlite

解决方案


通过使用varchar(255)代替string或解决了这个问题text


推荐阅读