如何根据多选列表框从数据库中选择数据?

编程入门 行业动态 更新时间:2024-10-28 06:22:15
本文介绍了如何根据多选列表框从数据库中选择数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我在c#windows表格vs2015工作 问题 如何从数据库中选择多个项目基于列表框多选? 详情 我将listbox 1控制属性选择模式设置为Multi简单 以下代码只选择一个从列表框中选择的项目并且没有任何问题但只选择一个项目 但如果我需要多选列表框如何更改我的代码如下:

I work in c# windows form vs2015 Problem How to select multiple item from database based on list box multiple select ? Details I set listbox 1 control property selection mode to Multi Simple code below select only one item selected from list box and work without any problem but select only one item but if i need to multi select for list box How to changes my code below :

public DataTable ShowaSpecificSerial(string SerialNo) { SqlConnection con = new SqlConnection(connection); con.Open(); string str = "select * from View_showdata where SerialNo=@SerialNo"; SqlCommand com = new SqlCommand(); com = new SqlCommand(str, con); com.Parameters.AddWithValue("@SerialNo", SerialNo); SqlDataAdapter oledbda = new SqlDataAdapter(); oledbda = new SqlDataAdapter(com); DataSet ds = new DataSet(); ds = new DataSet(); oledbda.Fill(ds, "View_showdata"); con.Close(); DataTable dt = new DataTable(); dt = ds.Tables["View_showdata"]; return dt; }

按钮下面我写下:

under button i write following :

private void button5_Click(object sender, EventArgs e) { string root = @"D:\Temp"; if (!Directory.Exists(root)) { Directory.CreateDirectory(root); } Class1 CLS = new Class1(); DataTable dt = CLS.ShowaSpecificSerial(listBox3.SelectedValue.ToString()); for (int i = 0; i <= Convert.ToInt32(dt.Rows.Count) - 1; i++) { txt = "UserID" + dt.Rows[i][0] + "ProductNo" + dt.Rows[i][1] + "Firm Name" + dt.Rows[i][2] + "BtachNo" + dt.Rows[i][3] + "SerialNo" + dt.Rows[i][4]; dm.DM(txt, Color.FromName(comboBox1.SelectedItem.ToString()), Color.White).Save(root + "\\" + dt.Rows[i][4] + ".emf", System.Drawing.Imaging.ImageFormat.Emf); } }

要查看的示例数据View_showdata: UserID产品公司BatchNo SerialNo Ali Parasitemol Farco 2099 000055 Ali ColdFlue Farco 2998 01112 Ali ColdFlue Farco 2998 08888866 结果 假设我做多选列表框到序号为000055和08888866 结果必须完成是创建两个文件图像datamatrix,名称为000055和 08888866在E:/ Temp 和当通过扫描仪读取它或移动读取数据后,每个序列选择 文件名08888866读取数据时必须有: Ali ColdFlue Farco 2998 08888866 以便如何更改上面的代码以接受来自数据库的多项选择 根据l 它接受多选但不接受数据库。 我尝试过: 如何根据多选列表框从数据库中选择数据?

Sample data to view View_showdata : UserID Product Firm BatchNo SerialNo Ali Parasitemol Farco 2099 000055 Ali ColdFlue Farco 2998 01112 Ali ColdFlue Farco 2998 08888866 Result suppose i make multi select to list box to serial no to 000055 and 08888866 the result must done is create two files image datamatrix with name 000055 and 08888866 in E : /Temp and when read it by scanner or mobile read data following to every serial selected file name 08888866 when read it the data must have : Ali ColdFlue Farco 2998 08888866 so that How to change my code above to accept multi select from database also according to list box it accept multi select but not from database . What I have tried: How to select data from database based on multi select list box ?

推荐答案

不幸的是SqlCommand不能很好地处理列表。 您可以使用StringBuilder构建IN子句的列表,并逐个添加参数,如下所示: Unfortunately SqlCommand does not handle lists very well. You could build the list for the IN clause using a StringBuilder and add the parameters one by one like this: if (listBox1.SelectedItems.Count == 0) return; using (var conn = new SqlConnection(constring)) { conn.Open(); var query = new StringBuilder("SELECT CustomerID, CompanyName, City FROM Customers WHERE CustomerID IN ("); using (var cmd = new SqlCommand()) { cmd.Connection = conn; var commaRqd = false; for (var i = 0; i < listBox1.SelectedItems.Count; i++) { if (commaRqd) query.Append(","); var parmName = string.Format("@P{0}", i); query.Append(parmName); commaRqd = true; cmd.Parameters.AddWithValue(parmName, listBox1.SelectedItems[i].ToString()); } query.Append(")"); cmd.CommandText = query.ToString(); var dr = cmd.ExecuteReader(); } conn.Close(); }

或 for循环的稍微整洁的版本是

OR A slightly tidier version of that for loop is

using (var cmd = new SqlCommand()) { var parmNames = new string[listBox1.SelectedItems.Count]; for (var i = 0; i < listBox1.SelectedItems.Count; i++) { parmNames[i] = string.Format("@P{0}", i); cmd.Parameters.AddWithValue(parmNames[i], listBox1.SelectedItems[i].ToString()); } query.Append(string.Join(",", parmNames)); query.Append(")"); cmd.Connection = conn; cmd.CommandText = query.ToString(); var dr = cmd.ExecuteReader(); }

更多推荐

如何根据多选列表框从数据库中选择数据?

本文发布于:2023-10-24 07:30:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1523328.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据库中   多选   数据   列表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!