替代SQLite3中的存储过程

时间:2015-12-30 22:49:52

标签: c# .net stored-procedures sqlite

我正在使用SQLite作为后端的.net win表单项目。我想创建一些用于我的项目的存储过程。这些SP通常会接受一些参数,在查询数据库之后返回一些值等。但SQLite不支持存储过程。我的问题是有没有替代sp或者如何运行多个查询获取一些输入并使用c#给出一些输出...请在这方面提出建议。谢谢提前。

1 个答案:

答案 0 :(得分:1)

SQLite没有存储过程或任何相同的东西。也许我不明白这个问题,但您可以根据用户输入构建查询字符串。像这个例子那样使用复选框来构建SQL查询,并分别返回结果:

        ArrayList fields = new ArrayList();
        fields.Add("id");
        if (CDomain.Checked)    { fields.Add(", domain"); }
        if (CCPU.Checked)       { fields.Add(", cpu_speed"); }
        if (CIP.Checked)        { fields.Add(", pc_ip"); }
        if (CLastUser.Checked)  { fields.Add(", last_user"); }
        if (CLoginDate.Checked) { fields.Add(", last_logon"); }
        if (CUsers.Checked)     { fields.Add(", users"); }
        if (CMonitors.Checked)  { fields.Add(", monitors"); }
        if (CPrinters.Checked)  { fields.Add(", printers"); }
        if (CPCName.Checked)    { fields.Add(", pc_name"); }
        if (COS.Checked)        { fields.Add(", os"); }
        if (CBit.Checked)       { fields.Add(", bitversion"); }
        if (CPrograms.Checked)  { fields.Add(", programs"); }
        if (CLicense.Checked)   { fields.Add(", license_key"); }
        if (CCPU.Checked)       { fields.Add(", cpu_speed"); }
        if (CRAM.Checked)       { fields.Add(", ram"); }
        if (CAdapter.Checked)   { fields.Add(", adapter_speed"); }
        if (CHardDrives.Checked){ fields.Add(", drives"); }

        dataBase db = new dataBase();
        try
        {                
            ArrayList v = db.queryDB(query, fields);
            if (v.ToArray().Length == 0)
            {
                MessageBox.Show("No results.");
            }
        }
        catch (Exception er) { MessageBox.Show("Somethign went wrong in the search function. " + er.ToString()); }
        ReportViewer report = new ReportViewer();
        report.Show();
        this.Close();

这听起来像你可能正在寻找的东西,似乎你想要一个动态SQL语句而不是存储过程。