c# – 使用未知数量的参数查询数据库

c# – 使用未知数量的参数查询数据库,第1张

概述我正在尝试查询现有的访问数据库,并允许用户为WHERE子句选择多个值.我一直在使用此网站上的代码由用户Mark Brackett提供: string[] tags = new string[] { "ruby", "rails", "scruffy", "rubyonrails" };string cmdText = "SELECT * FROM Tags WHERE Name IN ({0}) 我正在尝试查询现有的访问数据库,并允许用户为WHERE子句选择多个值.我一直在使用此网站上的代码由用户Mark Brackett提供:

string[] Tags = new string[] { "ruby","rails","scruffy","rubyonrails" };string cmdText = "SELECT * FROM Tags WHERE name IN ({0})";string[] paramnames = Tags.Select(    (s,i) => "@tag" + i.ToString()).ToArray();string inClause = string.Join(",",paramnames);using (sqlCommand cmd = new sqlCommand(string.Format(cmdText,inClause))) {    for(int i = 0; i < paramnames.Length; i++) {       cmd.Parameters.AdDWithValue(paramnames[i],Tags[i]);    }}

这给了这个:

cmd.CommandText = "SELECT * FROM Tags WHERE name IN (@tag0,@tag1,@tag2,@tag3)"cmd.Parameters["@tag0"] = "ruby"cmd.Parameters["@tag1"] = "rails"cmd.Parameters["@tag2"] = "scruffy"cmd.Parameters["@tag3"] = "rubyonrails"

这非常有效,但我也想要以下功能.如果用户决定不输入任何值(在此示例中,如果Tags数组为空),则我希望返回所有结果.实际上只是一个SELECT * FROM标签.

解决方法 怎么样的

string[] Tags = new string[] { "ruby","rubyonrails" };string cmdText = "SELECT * FROM Tags {0}";string[] paramnames = Tags.Select(            (s,i) => "@tag" + i.ToString()        ).ToArray();string cmDWhere = paramnames.Length > 0 ? String.Format("WHERE name IN ({0})",string.Join(",paramnames)) : "";using (sqlCommand cmd = new sqlCommand(string.Format(cmdText,cmDWhere))){    for (int i = 0; i < paramnames.Length; i++)    {        cmd.Parameters.AdDWithValue(paramnames[i],Tags[i]);    }}

因此,如果没有参数,则最后不添加where子句.

总结

以上是内存溢出为你收集整理的c# – 使用未知数量的参数查询数据库全部内容,希望文章能够帮你解决c# – 使用未知数量的参数查询数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1218327.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存