【问题标题】:Alternative to Stored procedures in SQLite3 [duplicate]SQLite3中存储过程的替代方案[重复]
【发布时间】:2015-12-30 22:49:51
【问题描述】:

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

【问题讨论】:

标签: c# .net stored-procedures sqlite


【解决方案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 语句而不是存储过程。

【讨论】:

  • 感谢 Steven 的代码 sn-p。实际上,我想执行多个查询并从这些查询中返回一些值,例如 begin SELECT COUNT() INTO 回答 FROM tblcomputer_t_questions_r WHERE t_id=tID AND mem_id=mId AND ckt_quest_answered_s !=0; SELECT COUNT() INTO not_answered FROM tblcomputer_t_questions_r WHERE t_id=tID AND mem_id=mId AND ckt_quest_notanswered_s !=0;结束
  • 我希望将 'answered ' 和 'not_answered' 值返回到我的代码中
  • 所以您希望选择 2 个字段(列)并将它们同时返回给用户?那么,如果我们有正确答案和错误答案,他们可以同时看到吗?
  • 是的..类似的东西
  • 使用 C# 我会查看字符串生成器或列表 在返回之前构建数据结果。您可能需要有点创意,但您可以计算结果以知道一个结束和下一组开始的时间,或者放入某种分隔符,如列表中的一个条目,上面写着“正在更改”,然后在给用户之前将其删除结果。如果您详细说明您的目标,我可能会提供更多帮助
猜你喜欢
  • 2023-04-04
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
相关资源
最近更新 更多