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