作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这段代码,它在 AVD 上成功运行:
package com.mohammadfs.sample;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
try {
Log.e("M3", Thread.currentThread().getName());
Class.forName("org.mariadb.jdbc.Driver");
Connection connection = DriverManager.
getConnection("jdbc:mariadb://192.168.1.7:3306/fun", "root", "bingo");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from people");
if(resultSet.next()) {
Log.d("M3", resultSet.getString(2) + " " + resultSet.getString(3) + " " +
resultSet.getString(4));
}
}
catch(SQLException e) {
Log.e("M3", e.getMessage() + "\n");
for(StackTraceElement element: e.getStackTrace()) {
Log.e("M3", " " + element.toString());
}
}
catch(Exception e) {
Log.e("M3", "WTF!");
}
}
}).start();
}
}
但是在物理设备上我得到了没有合适的驱动程序
错误,所以首先我添加了Class.forName("org.mariadb.jdbc.Driver")
在创建连接变量之前,将 ip 地址更改为 laptop在我的例子中是本地 IPv4:192.168.1.7
然后出现这个异常:
FATAL EXCEPTION: Thread-5122
java.lang.NoClassDefFoundError: java.nio.charset.StandardCharsets
at org.mariadb.jdbc.internal.packet.result.ErrorPacket.<init>(ErrorPacket.java:76)
at org.mariadb.jdbc.internal.packet.read.ReadInitialConnectPacket.<init>(ReadInitialConnectPacket.java:88)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:418)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:358)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:713)
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:471)
at org.mariadb.jdbc.Driver.connect(Driver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:175)
at java.sql.DriverManager.getConnection(DriverManager.java:209)
at com.mohammadfs.sample.MainActivity$1.run(MainActivity.java:27)
at java.lang.Thread.run(Thread.java:856)
所以我搜索并没有找到任何匹配的问题,但我从答案中得出结论另一个问题,这可能是因为最小 SDK,因为我的手机是 API 级别 17,而我使用的模拟器运行 API 23 版本。
编辑
正如@CommonsWare 回答的那样,我猜,这是因为需要 SDK!我也知道最好使用网络服务来完成这样的工作,但目前我不能那样做。任何解决方法都会有所帮助和赞赏:)
最佳答案
StandardCharsets
已添加到 API 级别 19。如果您需要使用此库,则需要将 minSdkVersion
设置为 19 或更高版本。
关于尝试连接到 pc localhost 时出现 java.nio.charset.StandardCharsets 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174882/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!