2011-12-15 252 views
3

我將值插入到數據庫中,但得到「列計數與列1中的值計數值不匹配」錯誤。「列計數與第1行的值計數不匹配」程序中的錯誤

try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    connection = DriverManager.getConnection(connectionURL, "root", "root"); 
    String sql = "insert into login(username,password) values(?,?)"; 
    PreparedStatement pst = connection.prepareStatement(sql); 
    pst.setString(1, username); 
    pst.setString(2, password); 

    int numRowsChanged = pst.executeUpdate(); 
    out.println(" Data has been submitted "); 

    pst.close(); 
} catch (ClassNotFoundException e) { 
    out.println("Couldn't load database driver: " + e.getMessage()); 
} catch (SQLException e) { 
    out.println("SQLException caught: " + e.getMessage()); 
} catch (Exception e) { 
    out.println(e); 
} finally { 
    try { 
     if (connection != null) 
      connection.close(); 
    } catch (SQLException ignored) { 
     out.println(ignored); 
    } 
} 

這是我的表MySql數據庫:

  +----------+-------------+------+-----+---------+-------+ 
      | Field | Type  | Null | Key | Default | Extra | 
      +----------+-------------+------+-----+---------+-------+ 
      | username | varchar(20) | YES |  | NULL |  | 
      | password | varchar(15) | YES |  | NULL |  | 
      +----------+-------------+------+-----+---------+-------+ 

爲什麼會出現這個錯誤?我的代碼有問題嗎? 請幫助我.......

+0

你有多少字段進入登錄表? – Pratik

+0

你能告訴我們表'login'的模式定義嗎? –

+0

您的登錄表中可能包含更多字段。 –

回答

0

可能列在sql字符串中被命名爲不正確。

+0

no ..他們是相同的 –

+0

現在你可以看到我的登錄表也....現在告訴我 –

+0

沒有沒有空格 –

0

錯誤本身可能是錯誤的,因爲一切看起來都很好。也許表登錄的主鍵沒有定義(用戶名)?我看到用戶名可以爲空。

+0

沒有主鍵沒有定義..但它不是問題 –

+0

我做了和你一樣的事情。而**一切正常**。差異可能是InnoDB(而不是ISAM),並且使用編碼UTF-8編碼數據庫和驅動程序的連接字符串。如果給出的編碼是UTF-16,那麼可以得到一個nul字節,並且這將在字節編碼中成爲字符串的結尾。有點可疑。 –

+0

我沒有找到你 –

0

另一種方法,一個未準備好的陳述可能會提供一個想法。

String sql = "insert into login(username, password) values('" 
     + username + "', '" + password + "')"; 
System.out.println("sql = " + sql); 
Statement pst = connection.createStatement(); 
pst.execute(sql); 

如果沒有什麼幫助,創建一個新表xxx和嘗試所有這一點。

+0

類型連接中的createStatement()方法不適用於參數(字符串)。此錯誤正在得到 –

+1

已更正;我希望現在是正確的Java。 –

+0

同樣的錯誤得到 –

0

實際上,當提供的值的數量和數量列不匹配時會導致此錯誤。插入表(col1,col2)值(val1) 和 插入表(col1)值(val1,val2) 兩者都會產生相同的錯誤。

我試過你的代碼,它完全與Oracle合作。因此,您可以檢查列名中的拼寫錯誤。

相關問題