发布时间:2023-08-23 19:30
String URL=\"jdbc:mysql://192.168.1.108:3306/db1?serverTimezone = GMT&characterEncoding=UTF-8\";
IP地址可通过WIN键+R,输入CMD,在黑框中输入ipconfig指令获得IPV4地址
允许root使用rootpassword从任何主机连接到MySQL服务器,root为用户名,rootpassword为用户密码
Mysql数据库开启远程连接 - 赵广陆 - 博客园
GRANT ALL PRIVILEGES ON *.* TO root@\'%\' IDENTIFIED BY \'rootpassword\' WITH GRANT OPTION;
FLUSH PRIVILEGES;
可以通过navicat测试连接,如果成功,则代表能够远程访问。
如果上述两种都没问题,关闭防火墙之后,依然不能正常连接,就需要注意MySQL的jar包问题。
我的问题解决方式就是更换JAR包版本来解决的,建议把JAR包换成5.1.49版本就能正常连接数据库。
mysql-connector-java-5.1.49 百度网盘下载地址分享_嘉 诚的博客-CSDN博客_mysql-connector-java-5.1.48
我的MYSQL是8.0版本,如果用同样是8.0版本的jar包,就会报错:java.lang.NoClassDefFoundError Failed resolution of LjavasqlSQLType
注意,连接MySQL数据库,需要新开一个线程运行,不然也会出错。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 连接数据库
initLogin();
}
private void initLogin() {
// 必须新开线程才能连接MySQL数据库
new Thread(new Runnable() {
@Override
public void run() {
// 数据库驱动
String CLS=\"com.mysql.jdbc.Driver\";
//这里的ip地址要改为自己的,db1为自己的数据库名字
String URL=\"jdbc:mysql://192.168.1.108:3306/db1?serverTimezone = GMT&characterEncoding=UTF-8\";
String USER=\"root\";
//这里输入自己的数据库密码
String PWD=\"\";
// 用test做一个简单的测试
String test=\"\";
try {
// 加载数据库驱动
Class.forName(CLS).newInstance();
// 连接数据库
Connection conn=(Connection) DriverManager.getConnection(URL,USER,PWD);
// sql 语句:从video表中获取全部数据
String sql=\"select * from video\";
Statement stmt=conn.createStatement();
// 执行sql
ResultSet rs=stmt.executeQuery(sql);
// 循环读取
while (rs.next()){
// 读取videoTitle字段,记载在test中
test+=rs.getString(\"VideoTitle\");
// 打印test
Log.v(\"debug\",test);
}
} catch (ClassNotFoundException | SQLException | IllegalAccessException | InstantiationException e) {
e.printStackTrace();
}
}
}).start();
}
}