简体   繁体   English

C#不喜欢SQL JOINS

[英]C# not liking SQL JOINS

I am trying to compare and build a table comparing two columns(Using LIKE). 我试图比较和构建一个比较两列的表(使用LIKE)。 In two classes(Win32_Printer.name and Win32_PrinterDriver.name). 在两个类(Win32_Printer.name和Win32_PrinterDriver.name)中。

The only issue is I cannot run any kind of JOIN 唯一的问题是我无法运行任何类型的JOIN

string query = string.Format("SELECT * 
FROM Win32_Printer INNER JOIN Win32_PrinterDriver
ON Win32_Printer.Name = Win32_PrinterDriver.Name
WHERE Win32_Printer.Name LIKE '%', Win32_PrinterDriver.Name, '%'"); 

After this is run I get thrown an error: 运行后,我会抛出一个错误:

在此输入图像描述

I think you repeat the join condition. 我想你重复加入条件。 You can go with just 你可以随便去

SELECT * 
FROM Win32_Printer 
  INNER JOIN Win32_PrinterDriver ON Win32_Printer.Name = Win32_PrinterDriver.Name

or if you want compare with like: 或者如果你想与之比较:

SELECT * 
FROM Win32_Printer P
  INNER JOIN Win32_PrinterDriver D ON D.Name LIKE '%'+P.Name+'%'
        string query = string.Format("SELECT * FROM Win32_Printer")
        try
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

        ManagementObjectCollection coll = searcher.Get();
        string name = "";
        foreach (ManagementObject printer in coll)
        {
            foreach (PropertyData property in printer.Properties)
            {

                if (property.Name == "Name")
                {
                    name = property.Value.ToString();
                }
                rtxLog.AppendText(property.Name + "-->" + property.Value + "\n");
                if (property.Name == "WorkOffline")
                {
                    string querydriver = string.Format("SELECT * from Win32_PrinterDriver WHERE Name LIKE '%" + name + "%'");
                    ManagementObjectSearcher searcherdriver = new ManagementObjectSearcher(querydriver);
                    ManagementObjectCollection colldriver = searcherdriver.Get();

                    foreach (ManagementObject driver in colldriver)
                    {
                        foreach (PropertyData propertydriver in driver.Properties)
                        {
                            rtxLog.AppendText(propertydriver.Name + "-->" + propertydriver.Value + "\n");
                        }
                    }
                }
                rtxNameLog.AppendText(name + "\n");
            }
            rtxLog.AppendText("\n\n\n\n\n\n\n\n\n\n\n");
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM