【问题标题】:C# not liking SQL JOINSC# 不喜欢 SQL JOINS
【发布时间】:2015-02-26 11:16:17
【问题描述】:

我正在尝试比较并构建一个比较两列的表(使用 LIKE)。在两个类中(Win32_Printer.name 和 Win32_PrinterDriver.name)。

唯一的问题是我无法运行任何类型的 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, '%'"); 

运行后我得到一个错误:

【问题讨论】:

  • 你在WHERE Win32_Printer.Name LIKE '%', Win32_PrinterDriver.Name, '%'"之间缺少OR,也许是WHERE Win32_Printer.Name LIKE '%' OR Win32_PrinterDriver.Name LIKE '%'"
  • 不会用+ 而不是, 完成字符串连接吗?
  • 这些都不起作用,我仍然遇到同样的错误。当我运行SELECT * FROM Win32_Printer INNER JOIN Win32_PrinterDriver ON Win32_Printer.Name = Win32_PrinterDriver.Name 时它也不起作用
  • 你能调试一下,看看你的 String.Format 后面的字符串查询包含什么吗?
  • SELECT * FROM Win32_Printer INNER JOIN Win32_PrinterDriver ON Win32_Printer.Name = Win32_PrinterDriver.Name WHERE Win32_Printer.Name LIKE '%' OR Win32_PrinterDriver.Name LIKE '%'

标签: c# mysql sql join


【解决方案1】:

我认为你重复了加入条件。你可以只去

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

或者如果你想与类似的比较:

SELECT * 
FROM Win32_Printer P
  INNER JOIN Win32_PrinterDriver D ON D.Name LIKE '%'+P.Name+'%'

【讨论】:

  • 如先前的响应中所述,这也不起作用并引发错误。第二个也是如此。
  • 我认为你没有遇到 sql 问题。
  • 如果我选择每个表,它工作正常SELECT * FROM Win32_Printer
  • 能否提供SQL表定义?
  • Win32_Printer 和 Win32_PrinterDriver 是 C# 类
【解决方案2】:
        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");
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    相关资源
    最近更新 更多