2016-01-09 146 views
0

我已使用JDBC連接到SQL Server。我運行的查詢之一有數據類型位,當我運行該程序時,出現此錯誤:SQLException:'位'附近的語法錯誤。SQLException:「位」附近的語法不正確

這裏是我的代碼:

  String sql3 = "SELECT DISTINCT customCategoryDescription FROM product_categories ORDER BY customCategoryDescription"; 
     rs2 = stmt3.executeQuery(sql3); 

     while (rs2.next()) 
     { 
      String customCategoryDescription = rs2.getString("customCategoryDescription"); 
      columns.add(customCategoryDescription); 
     } 
     rs2.close(); 
     stmt3.close(); 

     for(int i = 0; i < columns.size(); i++) 
     { 
      String sql4 = "ALTER TABLE transformed_table ADD "+columns.get(i)+" bit"; 
      stmt4.executeUpdate(sql4); 
      stmt4.close(); 
     } 

我試圖在SQL Server相同的查詢,併成功地添加列。

問題在哪裏?

+1

你應該編輯你的問題並在變量替換後打印'sql4'。 –

+0

@GordonLinoff ALTER TABLE transformed_table ADD B2B Solutions位 也許問題是由於空間的特點。但是我怎樣才能刪除它? –

+0

如果列名稱中有空格,請將該列放在矩形括號之間。 –

回答

2

我的猜測是,你有customCategoryDe​​scription的值是無效的列名 - 像「沒有空格」,這意味着這樣的:

String sql4 = "ALTER TABLE transformed_table ADD "+columns.get(i)+" bit"; 

會產生這樣的:

ALTER TABLE transformed_table ADD NO SPACE bit; 

如果你可以這樣做(注意[和]):

String sql4 = "ALTER TABLE transformed_table ADD ["+columns.get(i)+"] bit"; 

ALTER TABLE transformed_table ADD [NO SPACE] bit; 
+0

我工作,謝謝! :) –

+0

我可以再問你一個問題嗎?我想要運行這些查詢:\t \t \t \t \t \t String sql9 ='SELECT 1 FROM transactions AS tr,product_categories AS pc WHERE payer_id =「+ payer_ids.get(i)+」AND customCategoryDe​​scription = [「+ columns.get(j )+「] AND tr.id_3rd_level = pc.id_3rd_level'; String sql10 ='INSERT INTO transformed_table([「+ columns.get(j)+」]);但我得到這個錯誤 但我得到這個消息:SQLException:無效的列名稱'B2B解決方案'。 你能幫我嗎? –

+0

@KonstantinaPapagiannopoulou - 已回答此問題。如果您有其他問題,請[提出新問題](http://stackoverflow.com/questions/ask)。您可以隨時在新問題中包含一個[鏈接到此問題](http://stackoverflow.com/q/34694864/2144390)以提供上下文。 –