c#查询sqlite数据库,得到一个类型的数据



在从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是一个float,在我的数据库中有与PercChange1h相同的类型,但我只得到";系统数据SQLite。SQLiteDataReader";。

我已经试过了:

var b = (float)dataClass.SelectQuery("SELECT PercChange1h FROM DataCrypt WHERE ID = 1")["PercChange1h"]

它返回一个错误"0";行不存在";。所有其他类型的强制转换都不起作用((int),ToString())

我的代码与create、ALTER或INSERT几乎相同,并且工作得很好(但我不必返回数据"")

var cmd = new SQLiteCommand();
cmd = sqlite.CreateCommand();
cmd.CommandText = query;  //set the passed query
cmd.ExecuteNonQuery();

你知道我如何用c#从sqlitedb中获取字符串或浮点之类的类型吗?(这是我的第一个问题,所以如果没有足够的数据,我会在这里回答)

祝你今天愉快!

您的函数应该看起来像这个

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