2015-05-25 73 views
1

我正在使用MySQL Server 5.6,Tomcat 8.0。我可以創建一個SQL輸入語句,它可以將硬編碼值放入我的表中,但如果我嘗試使用一個變量,它會在表中顯示爲NULL。我在緊接在變量中顯示正確值的SQL語句之前有println語句。我的語法看起來是正確的,正如我所說的,它適用於硬編碼值。 請原諒代碼格式。這應該是一個快速(HA!)和骯髒的概念證明。java mysql input NULL

代碼片段:顯示的println輸出

// method to update spice table with input data 
    public void update() 
    { 
    System.out.println("Starting Update"); 
    java.sql.Date useDate = new java.sql.Date(convert(date)); 

    Connection conn = null; 
    Statement stmt = null; 
    String sql; 
     try{ 
    System.out.println("Starting try..."); 
     // Register JDBC driver 
     Class.forName("com.mysql.jdbc.Driver"); 

     // Open a connection 
     System.out.println("Connecting to database..."); 
     conn = DriverManager.getConnection(DB_URL,USER,PASS); 
     System.out.println("Connected database successfully..."); 

     // Execute update 
     System.out.println("Creating statement..."); 
     stmt = conn.createStatement(); 
     System.out.println("Name is " + name +"."); 
     System.out.println("Name is " + getName() +"."); 
     sql = "INSERT INTO spices VALUES (name, 'location', 'container', 'status', useDate)"; 
     stmt.executeUpdate(sql); 

     // Clean-up environment 
     stmt.close(); 
     conn.close(); 
    }catch(SQLException se){ 
     //Handle errors for JDBC 
    System.out.println("errors for JDBC"); 
     se.printStackTrace(); 
    }catch(Exception e){ 
     //Handle errors for Class.forName 
    System.out.println("errors for Class.forName"); 
     e.printStackTrace(); 
    }finally{ 
     //finally block used to close resources 
     try{ 
     if(stmt!=null) 
      stmt.close(); 
     }catch(SQLException se2){ 
    System.out.println("SQLException - stmt.close()"); 
     }// nothing we can do 
     try{ 
     if(conn!=null) 
      conn.close(); 
     }catch(SQLException se){ 
    System.out.println("SQLException - conn.close()"); 
     se.printStackTrace(); 
     }//end finally try 
    }//end try 
    System.out.println("Goodbye!"); 
    } 

服務器日誌:

2015-05-25 19:37:46 Commons Daemon procrun stdout initialized 
Starting Update 
Starting try... 
Connecting to database... 
Connected database successfully... 
Creating statement... 
Name is chilli. 
Name is chilli. 
Goodbye! 

表輸出:

| NULL  | location | container | status | NULL  | 

第一個空應該說是 「辣椒」。 任何幫助將不勝感激 - 我在這裏撕開頭​​發! 桂林

+0

它不應該是:SQL = 「INSERT ...... '」 +名字+ 「 '......'」 + useDate + 「')」 與你的變量字符串 – Kevin

+0

共享代碼從哪裏打印「2015-05-25 19:37:46 Commons Daemon procrun stdout初始化」行。 – Bikku

+0

Arin,Tomcat在啓動日誌時寫道。 – kwl

回答

0

應該

sql = "INSERT INTO spices VALUES ('"+name+"', 'location', 'container', 'status', '"+useDate+"')"; 
+0

一般而言,如果答案包含對代碼意圖做什麼的解釋,以及爲什麼解決問題而不介紹其他問題,答案會更有幫助。 (這篇文章被至少一個用戶標記,大概是因爲他們認爲沒有解釋的答案應該被刪除。) –

+0

非常感謝,斯坦。正是我所需要的幫助 - 認爲我昨天花了太多時間直接處理SQL。當我意識到我做了什麼時,你應該聽到嚎叫...... – kwl