【发布时间】:2016-02-16 12:35:39
【问题描述】:
编写了一些简单的代码来在 Netbeans IDE 的控制台中显示数据库的内容,但是当将此代码移植到 Android Studio 时,我收到许多 ClassNotFound 错误,有谁知道我如何将 JDBC 类导入 Android Studio 或者我是否有刚刚出现编码错误?
代码:
String JDBC_DRIVER = "com.mysql.jdbc.Driver";
String DB_URL = "jdbc:mysql://localhost/EMP";
// Database credentials
String USER = "root";
String PASS = "";
Connection conn = null;
Statement stmt = null;
try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
//System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//STEP 4: Execute a query
//System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, username, password FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
//STEP 5: Extract data from result set
while(rs.next() ){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
//STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
//end try
}
错误:
02-16 07:25:40.285 24180-24180/com.example.georgetucker.youdecide W/System.err: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
02-16 07:25:40.285 24180-24180/com.example.georgetucker.youdecide W/System.err: at java.lang.Class.classForName(Native Method)
02-16 07:25:40.285 24180-24180/com.example.georgetucker.youdecide W/System.err: at java.lang.Class.forName(Class.java:204)
02-16 07:25:40.285 24180-24180/com.example.georgetucker.youdecide W/System.err: at java.lang.Class.forName(Class.java:169)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at com.example.georgetucker.youdecide.LoginActivity.loginButtonOnClick(LoginActivity.java:49)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at java.lang.reflect.Method.invoke(Method.java:525)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at android.view.View$1.onClick(View.java:3628)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at android.view.View.performClick(View.java:4240)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at android.view.View$PerformClick.run(View.java:17721)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at android.os.Handler.handleCallback(Handler.java:730)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at android.os.Handler.dispatchMessage(Handler.java:92)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at android.os.Looper.loop(Looper.java:137)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5103)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at java.lang.reflect.Method.invoke(Method.java:525)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at dalvik.system.NativeStart.main(Native Method)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: Caused by: java.lang.NoClassDefFoundError: com/mysql/jdbc/Driver
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: ... 18 more
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.mysql.jdbc.Driver" on path: DexPathList[[zip file "/data/app/com.example.georgetucker.youdecide-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.georgetucker.youdecide-2, /system/lib]]
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-16 07:25:40.295 24180-24180/com.example.georgetucker.youdecide W/System.err: ... 18 more
感谢收看 :)
【问题讨论】:
标签: java android android-studio jdbc