package com.example.oracle_work;
import android.content.Context;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseHelper {
private static final String DB_URL = "jdbc:oracle:thin:@//localhost:1521/orcl";
private static final String USERNAME = "c##student_user";
private static final String PASSWORD = "student_password";
public static Connection connectToDatabase(Context context) {
Connection connection = null;
try {
connection = DriverManager.getConnection(DB_URL,USERNAME,PASSWORD);
} catch (SQLException e) {
// 捕获 SQLException 异常,并抛出 RuntimeException
throw new RuntimeException("Failed to connect to database", e);
}
return connection;
}
}
package com.example.oracle_work;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import oracle.jdbc.driver.OracleDriver;
public class MainActivity extends AppCompatActivity {
private TextView studentInfoTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取 TextView 对象
studentInfoTextView = findViewById(R.id.student_info_text_view);
// 连接数据库
Connection connection = null;
try {
// 加载数据库驱动程序
DriverManager.registerDriver(new OracleDriver());
// 创建数据库连接
String url = "jdbc:oracle:thin:@//localhost:1521/orcl";
String username = "c##student_user";
String password = "student_password";
connection = DriverManager.getConnection(url, username, password);
if (connection != null) {
// 创建 Statement 对象
Statement statement = connection.createStatement();
// 执行查询语句
String query = "SELECT * FROM students";
ResultSet resultSet = statement.executeQuery(query);
// 处理查询结果
StringBuilder stringBuilder = new StringBuilder();
while (resultSet.next()) {
// 获取查询结果中的数据
String studentId = resultSet.getString("STUDENT_ID");
String name = resultSet.getString("NAME");
// 拼接结果字符串
stringBuilder.append("Student ID: ").append(studentId).append(", Name: ").append(name).append("\n");
}
// 将结果显示在 TextView 中
studentInfoTextView.setText(stringBuilder.toString());
// 关闭结果集和语句
resultSet.close();
statement.close();
} else {
// 无法连接到数据库,处理错误情况
Log.e("MainActivity", "Failed to connect to database");
}
} catch (SQLException e) {
e.printStackTrace();
// 处理查询异常
Log.e("MainActivity", "SQL Exception: " + e.getMessage());
} finally {
// 关闭数据库连接
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Oracle_work"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
FATAL EXCEPTION: main
Process: com.example.oracle_work, PID: 17239
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/sql/DriverAction;
at com.example.oracle_work.MainActivity.onCreate(MainActivity.java:33)
at android.app.Activity.performCreate(Activity.java:8051)
at android.app.Activity.performCreate(Activity.java:8031)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)