从 C# 数据库查询中获取数据时遇到一些问题 这是我的查询代码:
using System;
using System.Text;
using System.Data;
using System.Data.SQLite;
namespace Cryptomoney
{
class DataClass
{
private static SQLiteConnection sqlite;
public DataClass()
{
sqlite = new SQLiteConnection("Data Source= DataCrypto.sqlite3;Version=3;New=False;");
}
public SQLiteDataReader SelectQuery(string query)
{
try
{
sqlite.Open(); //Initiate connection to the db
SQLiteCommand sqlComm = sqlite.CreateCommand();
sqlComm.CommandText = query;
SQLiteDataReader r = sqlComm.ExecuteReader();
sqlite.Close();
}
catch (SQLiteException ex)
{
Console.WriteLine(ex);
}
sqlite.Close();
return r;
}
}
}
这是带有sql的代码:
var b = dataClass.SelectQuery("SELECT PercChange1h FROM DataCrypt WHERE ID = 1");
我希望 b 是一个浮点数,与我的数据库中的 PercChange1h 类型相同,但我只得到“System.Data.SQLite.SQLiteDataReader”。
我已经尝试过了:
var b = (float)dataClass.SelectQuery("SELECT PercChange1h FROM DataCrypt WHERE ID = 1")["PercChange1h"]
返回错误“行不存在”。所有其他类型的强制转换都不起作用 ((int), ToString())
我的代码与创建或更改或插入几乎相同,并且工作得很好(但我不必取回数据”
var cmd = new SQLiteCommand();
cmd = sqlite.CreateCommand();
cmd.CommandText = query; //set the passed query
cmd.ExecuteNonQuery();
你知道我如何使用 C# 从我的 sqlite 数据库中获取字符串或浮点数等类型吗? (这是我的第一个问题,如果没有足够的数据,我会在这里回答)
祝你有美好的一天!
你的函数应该是这样的
public object QueryScalarValue(string query)
{
try
{
sqlite.Open(); //Initiate connection to the db
using SQLiteCommand sqlComm = new SQLiteCommand(query, sqlite);
return sqlComm.ExecuteScalar();
}
catch (SQLiteException ex)
{
Console.WriteLine(ex);
}
finally
{
sqlite.Close();
}
return r;
}
然后你只需投射结果
var b = (double)dataClass.SelectQuery("SELECT PercChange1h FROM DataCrypt WHERE ID = 1");