SQLite return 错误的字符串值 C#
SQLite return wrong string value C#
我有包含一些值的本地 SQLite 数据库。
我有“字符串”类型的“名称”和“描述”列。
像 32145152174524132151421
这样的值可以插入到这些列中。
当我尝试使用 System.Data.SQLite
库获取值时,
在我使用 reader.GetValue().toString()
或 reader.GetString()
的情况下,我得到类似 32321541e+35
的值或 InvalidCast 异常,但数据库存储正常值。
SQLite 及其在 CastValues 方面的问题简直让我受不了。
有人可以帮助我吗?
列“Zakupki_name”和“Zakupki_description”具有 string
数据类型。
我写的最后没有点,但在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)
而不是 string
或 text
解决了这个问题
我有包含一些值的本地 SQLite 数据库。 我有“字符串”类型的“名称”和“描述”列。
像 32145152174524132151421
这样的值可以插入到这些列中。
当我尝试使用 System.Data.SQLite
库获取值时,
在我使用 reader.GetValue().toString()
或 reader.GetString()
的情况下,我得到类似 32321541e+35
的值或 InvalidCast 异常,但数据库存储正常值。
SQLite 及其在 CastValues 方面的问题简直让我受不了。 有人可以帮助我吗?
列“Zakupki_name”和“Zakupki_description”具有 string
数据类型。
我写的最后没有点,但在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)
而不是 string
或 text