c# 查询sqlite数据库,返回一个类型的数据

问题描述 投票:0回答:1

从 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 数据库中获取字符串或浮点数等类型吗? (这是我的第一个问题,如果没有足够的数据,我会在这里回答)

祝你有美好的一天!

c# sqlite
1个回答
1
投票

你的函数应该是这样的

    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");
© www.soinside.com 2019 - 2024. All rights reserved.