检索与多或
本文关键字:检索 | 更新日期: 2023-09-27 18:15:22
我正在创建WFP应用程序,我想检索表到datagridview通过在列表框中选择多个值,获取从列表框中选择的所有数据,所以主要思想将此查询从SQL应用到应用程序
select * from Vwtb where firstname='' or firstaname='' or ..
我已经尝试过while循环和搜索了很多,但没有工作,这是我的代码,请如果它对你来说很奇怪,我不专业:)
string[] orand = { "or"+listBox1.Text };
foreach (string sm in orand)
{
cn.Open();
string select = "select * from productvw where firstname='" + sm + "'";
SqlDataAdapter dataAdapter = new SqlDataAdapter(select, cn);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
DataTable ds = new DataTable();
dataAdapter.Fill(ds);
dataGridView1.ReadOnly = true;
dataGridView1.DataSource = ds;
cn.Close();
}
任何类型的帮助将是如此感激....
您可以将您的数组转换为可用于in操作符的字符串。要实现这一点,请使用以下扩展方法
public static class StaticClass
{
public static string ConvertStringArrayToString(this string[] array)
{
StringBuilder builder = new StringBuilder();
for (int i=0;i<array.Length;i++)
{
builder.Append(array[i]);
if(i+1==array.Length)break;
builder.Append(',');
}
return builder.ToString();
}
}
然后在代码中像这样使用
string[] orand = { "or"+listBox1.Text };
var values=orand.ConvertStringArrayToString();
cn.Open();
string select =" SELECT * FROM productvw WHERE firstname IN "+"("+values+")"
SqlDataAdapter dataAdapter = new SqlDataAdapter(select, cn);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
DataTable ds = new DataTable();
dataAdapter.Fill(ds);
dataGridView1.ReadOnly = true;
dataGridView1.DataSource = ds;
cn.Close();
您可以使用IN操作符
string command = "SELECT * FROM productvw WHERE firstname IN (@names)";
SqlDataAdapter dataAdapter = new SqlDataAdapter(select, cn);
dataAdapter.Parameters.Add("@names", names);
名称将是一个字符串列表,List<string>
,并且将包含您想要使用的所有名字。
可以使用以下语法:
SELECT *
FROM productvw
WHERE firstname IN (value1,value2,...);
首先创建一个循环,该循环生成sql字符串并填充值。