2017-02-28 142 views
1

今天我写了我的第二个代码在C# 为什么不工作?代码ist(看起来)是正确的!无效查询C#

错误代码:InvalidQuery

代码:

static void Main(string[] args) 
     { 
      GetComponent("Win32_Processor", "Name"); 
     Console.Read(); 
     Console.ReadKey(); 
     } 

    private static void GetComponent(string hwclass, string syntax) 
    { 
    ManagementObjectSearcher mos = new ManagementObjectSearcher ("root\\CIMV2","SELECT * FROM" + hwclass); 
    foreach(ManagementObject mj in mos.Get()) 
     { 
      Console.WriteLine(Convert.ToString(mj[syntax])); 
     } 


    } 
+0

你为什么不使用VS DEBUG功能? – Jivan

+4

呃,试着在'FROM'后面添加*空格*:“root \\ CIMV2”,“SELECT * FROM”+ hwclass)' –

回答

3

你之后 “FROM” 缺少空间:

("root\\CIMV2","SELECT * FROM" + hwclass); 

更改为:

("root\\CIMV2","SELECT * FROM " + hwclass); 
+0

谢谢!这样的小错误... –

4

请,使用格式化串插(C#6.0+),以避免语法错误:

private static void GetComponent(string hwclass, string syntax) { 
    //DONE: keep query readable 
    string query = 
    [email protected]"select * 
     from {hwclass}"; // <- you've missed space here 

    //DONE: wrap IDisposable into using 
    using (ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", query)) { 
    foreach(ManagementObject mj in mos.Get()) 
     Console.WriteLine(Convert.ToString(mj[syntax])); 
    } 
} 
+0

不能让自己变得更好。带格式和字符串插值的提示+1。 – SimonC

+0

谢谢你的男人!这样一个小错误.. –