2017-02-28 186 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

謝謝你的男人!這樣一個小錯誤.. –