已回答 将多个值发送到SQL查询

giasone777

活跃成员
已加入
2019年7月19日
留言内容
29
编程经验
1-3
你好,

我想将多个查询发送到sql服务器。它适用于一个,但我试图使其适用于存储在数组中的多个值,这些数组来自列表框的多个选择。

因此,现在,@ RealVms确定了查询,例如,我希望该查询从数组getselections [num]中提取值,从而基本上具有以下效果

string selectSql = ("select Name, vmHost, Uid from db_owner.vms where UID Like @gotselections[0] and where UID like @gotselections[1] "); 或更高,取决于列表框中的选择数量。

请帮助-提前谢谢。杰森

这些是存储在sql数据库中的VMware对象。最后,查询被发送到asp网格。以下代码确实有效,但仅适用于一个查询。

C#:
string hosty = vmtofind.Text;
String GetSelection = objectList.SelectedItem.Text;
string RealVms = "%" + GetSelection + "%";

using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconnection"].ConnectionString))
{
    con.Open();

    string selectSql = ("select Name, vmHost, Uid from db_owner.vms where UID Like @RealVms");
    SqlCommand cmd = new SqlCommand(selectSql, con);

    cmd.Parameters.AddWithValue("@RealVms", RealVms);

    SqlDataReader dr = cmd.ExecuteReader();

    GridView1.DataSource = dr;
    GridView1.DataBind();

    con.Close();
 
由主持人最后编辑:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,447
位置
弗吉尼亚州切萨皮克
编程经验
10+
为什么需要数组?您将需要遍历读者以构建列表。然后从列表中构建一个数组。然后,您将遍历数组以进行比较。因此,跳过中间人,直接进行比较。

这是构建数组的伪代码:
C#:
// build list of records
var list = new List<Record>()
while (reader.Read())
{
    var record = new Record()
    record.Name = record["Name"]
    record.VMHost = record["vmHost"]
    record.Uuid = record["uuid"]
    list.Add(record);
}

// convert list of records to an array
var recordArray = list.ToArray();
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,447
位置
弗吉尼亚州切萨皮克
编程经验
10+
否。或更像数据读取器具有该列表的优胜劣汰,但它不是易于使用的形式。您需要遍历阅读器以一次获得每个项目。

请参阅文档。
 

giasone777

活跃成员
已加入
2019年7月19日
留言内容
29
编程经验
1-3
我进行了如下更改,因为列表中有几个红色花键,而我将其更改为使已变形的值消失的值,但Record仍显示为红色花键,为什么?

它说找不到命名空间Record。

C#:
 var values = new List<string>();
                while (dr.Read())
                {
                  var record = new Record();
                    record.Name = record["Name"];
                    record.VMHost = record["vmHost"];
                    record.Uuid = record["uuid"];
                     values.Add(record);
                }
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,447
位置
弗吉尼亚州切萨皮克
编程经验
10+
正如我所说,我正在向您展示一些伪代码。

You are supposed to create your own Record class that will hold your data that you want the DataGridView to display.

出于好奇,您正在使用什么教程或书籍来学习C#?您似乎缺少了一些基础知识,因此直接使用ADO.NET。
 

giasone777

活跃成员
已加入
2019年7月19日
留言内容
29
编程经验
1-3
通常只是将它们放在一起,没有书,您建议什么基本原理?

我是一家知名公司的Vmware支持人员,在我遇到故障时只能在c#中挣扎-如您所见,我不是程序员。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,447
位置
弗吉尼亚州切萨皮克
编程经验
10+
我建议这些,尽管有些项目的学习曲线比他们需要的陡峭:

由于我在语言仍处于开发和alpha阶段时自学了C#,因此我真的不能推荐任何适合C#的最新书籍。也许其他人可以采纳他们的建议。至于只学习ADO.NET本身,我发现这相当不错:
 
最佳 底部