返回SQLite值的最佳方法

时间:2017-03-13 17:29:31

标签: c# sqlite return-value

我在通用Windows APP中有一个SQLite数据库,并且有多种类型(bool,int和Uint64)。我需要通过ID返回表格中的所有值。

    // Id Module
    [PrimaryKey]
    public int id { set; get; }
    // Fix comm state
    public bool commState { set; get; }
    // Fix home sensor state
    public bool homeSensor { set; get; }
    // Fix up sensor state
    public bool upSensor { set; get; }
    // Fix down sensor state
    public bool downSensor { set; get; }
    // Fix actual tier position
    public int actualTier { set; get; }
    // Fix actual step of encoder
    public UInt64 encodPosition { set; get; }

我尝试通过List返回它,但我想我不能用不同的类型返回。

从SQLite DB一起返回这些值的最佳方法是什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用Entity Framework返回所需的对象。这是一个将引导您完成整个过程的教程:

https://erazerbrecht.wordpress.com/2015/06/11/sqlite-entityframework-6-tutorial/

如果你想使用ADO.NET,这里有一个方法可以返回一个DataSet(使用Sqlite.Net):

    private static DataSet ExecuteDataset(string DBLocation, string query)
    {
        var conn = new SQLiteConnection("Data Source=" + DBLocation + ";Version=3;");
        DataSet ds;
        try
        {
            conn.Open();
            ds = new DataSet();
            var da = new SQLiteDataAdapter(query, conn);
            da.Fill(ds);
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Close();
        }
        return ds;
    }

答案 1 :(得分:0)

MethodMan有助于解决问题。

我创建了一个对象:

class objModel
{
    // Id Module   
    public int id { set; get; }
    // Fix comm state
    public bool commState { set; get; }
    // Fix home sensor state
    public bool homeSensor { set; get; }
    // Fix up sensor state
    public bool upSensor { set; get; }
    // Fix down sensor state
    public bool downSensor { set; get; }
    // Fix actual tier position
    public int actualTier { set; get; }
    // Fix actual step of encoder
    public UInt64 encodPosition { set; get; }
}

然后使用对象列表:

public List<objModel> getParameters()
    {
        var db = new SQLiteConnection(new SQLitePlatformWinRT(), pathDBLocal);

        var sList = db.Table<ModuleDB>();

        List<objModel> mList = new List<objModel>();

        foreach (var item in sList)
        {
            mList.Add(item.objM);                   
        }
        return mList;
    }

谢谢你们......:)