package me.martinwiesner.mysqltest;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class DBConnect {
// Driver
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
// URL
static final String DB_URL = "jdbc:mysql://host:port/name";
static final String USER = "username";
static final String PASS = "password";
public static List<User> getAllUsers() {
List<User> users = new ArrayList<User>();
Connection conn = null;
Statement stmt = null;
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement();
String sql;
sql = "SELECT id, first name, last name, email, password, admin FROM users";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String firstName = rs.getString("first name");
String lastName = rs.getString("last name");
String email = rs.getString("email");
String password = rs.getString("password");
boolean isAdmin = Boolean.getBoolean(rs.getString("admin"));
User u = new User(email, firstName, lastName, password, isAdmin, id);
users.add(u);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
System.out.println("1");
return null;
} catch (Exception e) {
System.out.println("2");
return null;
} finally {
try {
if (stmt != null)
stmt.close();
} catch (SQLException se2) {
System.out.println("3");
users = null;
}
try {
if (conn != null)
conn.close();
} catch (SQLException se) {
System.out.println("4");
users = null;
}
}
return users;
}
}
我想訪問我的數據庫,但它不工作,它返回null。 例外:爲什麼這不起作用? Java MySQL
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'first' in 'field list'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.Util.getInstance(Util.java:387)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:941)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3870)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3806)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2470)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2617)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2546)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2504)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1370)
at me.martinwiesner.mysqltest.DBConnect.getAllUsers(DBConnect.java:34)
at me.martinwiesner.mysqltest.Main.main(Main.java:12)
我改變了我的用戶名,密碼,主機,端口和名稱。否則每個人都可以訪問我的數據庫。
你應該調用e.printStackTrace() –
*「它返回null」*什麼返回null? – Pang
不要將「粘貼」鏈接置於問題中。它們很快消失。而是將異常堆棧跟蹤複製到問題中......作爲TEXT。 –