Ik krijg steeds een "Column count doesn't match value count at row 1" error, terwijl ik precies de kolommen over heb genomen uit mijn database. Ik heb ook geprobeerd de value voor de eerste kolom met '' aan te duiden maar nu staat er dus eerst een count die opgehoogd wordt met een om zelf dat ID aan te maken (die kolom numbers is key en auto-increment in MySQL, volgens mij hoeft dat niet eens dus).
Dit is het stukje code wat de query aanstuurt:
Dit is de String die bij de System.out.println te zien krijg in de bovenstaande code:
Dit is de code die het weg schrijft:
Dit is de tabel waar het in gaat:
En dit is de fout die ik krijg tijdens runtime:
Sorry voor de lappen code, maar ik maak het toch vaker mee dat een fout heel ergens anders zit dan je verwacht.
Dit is het stukje code wat de query aanstuurt:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| if (e.getActionCommand() == "Accept this Character") { String pw1s = new String((playerPassword1.getPassword()), 0, ((playerPassword1.getPassword()).length)); String pw2s = new String((playerPassword2.getPassword()), 0, ((playerPassword2.getPassword()).length)); if ((playerName.getText()).length() >= 5) { if (pw1s.equals(pw2s)) { if (pw1s.length() >= 5) { player = new Player(characterCreator.getStrength(), characterCreator.getSpeed(), characterCreator.getPrecision(), characterCreator.getSocial(), characterCreator.getIntelligence(), playerName.getText()); int newRecordNumber = sql.getAmountOfRecords("players") + 1; String query = "insert into players (number, name, strength, speed, precision, intelligence, social, password) values (3, '" + player.getName() + "', " + player.getStrength() + ", " + player.getSpeed() + ", " + player.getPrecision() + ", " + player.getSocial() + ", " + player.getIntelligence() + ", '" + pw1s + "')"; System.out.println(query); sql.setData("insert into players values ('" + player.getName() + "', '" + player.getStrength() + "', '" + player.getSpeed() + "', '" + player.getPrecision() + "', '" + player.getSocial() + "', '" + player.getIntelligence() + "', '" + pw1s + "')"); allSwitchTo(mainguiview); } else JOptionPane.showMessageDialog(null, "Password must be at least 5 characters!", "Password error", JOptionPane.ERROR_MESSAGE); } else JOptionPane.showMessageDialog(null, "Passwords do not match!", "Password error", JOptionPane.ERROR_MESSAGE); } else JOptionPane.showMessageDialog(null, "Player name at least 5 characters!", "Character name error", JOptionPane.ERROR_MESSAGE); pw1s = ""; pw2s = ""; } |
Dit is de String die bij de System.out.println te zien krijg in de bovenstaande code:
Dit is het stukje code wat het aantal records telt:insert into players (number, name, strength, speed, precision, intelligence, social, password) values (3, '12345', 13, 11, 15, 10, 12, '12345')
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public int getAmountOfRecords(String table) { int resultCount = 0; try { rs = stmt.executeQuery("SELECT COUNT(*) FROM Players"); rs.next(); int count = rs.getInt(1); } catch (SQLException se) { // Inform user of any SQL errors System.out.println("SQL Exception: " + se.getMessage()); se.printStackTrace(System.out); resultCount = 0; } return resultCount; } |
Dit is de code die het weg schrijft:
Java:
1
2
3
4
5
6
7
8
9
10
| public void setData(String query) { try { stmt.executeUpdate(query); } catch (SQLException se) { // Inform user of any SQL errors System.out.println("SQL Exception: " + se.getMessage()); se.printStackTrace(System.out); } } |
Dit is de tabel waar het in gaat:
code:
1
2
3
4
5
6
7
| mysql> select * from players; +--------+-------+----------+-------+-----------+--------+--------------+----------+ | number | name | strength | speed | precision | social | intelligence | password | +--------+-------+----------+-------+-----------+--------+--------------+----------+ | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | | 2 | test | 0 | 0 | 0 | 0 | 0 | test | +--------+-------+----------+-------+-----------+--------+--------------+----------+ |
En dit is de fout die ik krijg tijdens runtime:
code:
1
2
3
4
5
6
7
8
| java.sql.SQLException: Column count doesn't match value count at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2847)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1531)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1622)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2370)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2297)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1289)
at sud.SqlConnector.setData(SqlConnector.java:76) |
Sorry voor de lappen code, maar ik maak het toch vaker mee dat een fout heel ergens anders zit dan je verwacht.
[ Voor 7% gewijzigd door NMe op 11-04-2005 10:49 . Reden: Code tag gefixt ]
iOS developer