准备工作:添加引用
在AndroidManifest.xml文件内增加
<uses-permission android:name="android.permission.INTERNET" />
一、建立连接
//连接数据库,成功返回真,失败返回假
private boolean conSQL() throws ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
try {
String url = "jdbc:mysql://数据库连接外部地址:3306/数据库名称?autoReconnect=true&useSSL=false";
String name = "用户名";
String password = "密码";
con = DriverManager.getConnection(url, name, password);
} catch (SQLException e) {
e.printStackTrace();
}
if (con != null) {
return true;
} else {
tv_ts1.post(() -> tv_ts1.setText("数据库未连接"));
return false;
}
}
二、查询数据
//查询并返回结果,查到结果的返回真,未查到结果返回假,结果赋给ResultSet变量rs
private boolean rtnSQL(String sql) throws SQLException, ClassNotFoundException {
if (conSQL()) {
PreparedStatement ps = con.prepareStatement(sql);
ps.execute();
rs = ps.getResultSet();
rs.last(); //移到最后一行
int rowCount = rs.getRow(); //得到当前行号,也就是记录数
if (rowCount > 0) {
rs.beforeFirst(); //如果还要用结果集,就把指针再移到初始化的位置
return true;
} else {
tv_ts1.post(() -> tv_ts1.setText("未查询到结果"));
return false;
}
}
return false;
}
三、显示查询结果
//处理查询结果
@SuppressLint("SetTextI18n")
private void rs_user() throws SQLException {
rs.next();
String a = rs.getString(1);
String b = rs.getString(2);
String c = rs.getString(3);
String d = rs.getString(4);
String f = rs.getString(6);
String g = rs.getString(7);
String h = rs.getString(8);
tv_ts1.post(() -> tv_ts1.setText(a + "\n" + b + "\n" + c + "\n" + d + "\n" + f + "\n" + g + "\n" + h));
}
综合:以下为全部代码
package com.example.mysql;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MainActivity extends AppCompatActivity {
TextView tv_ts1;
Button btn_lj;
Button btn_cx;
Connection con = null;
ResultSet rs = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_ts1 = (TextView) findViewById(R.id.tv_ts1);
btn_lj = (Button) findViewById(R.id.btn_lj);
btn_cx = (Button) findViewById(R.id.btn_cx);
btn_lj.setOnClickListener((v -> {
new Thread(() -> {
try {
@SuppressLint("HardwareIds") String androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);//获取机器码
String sql="call DC_SVIP_App_InsertUser('19979162865','" + androidId + "');";
Log.v("SQL",sql);
boolean io2 = rtnSQL(sql);//执行SQL,并输出查询结果
if(io2)
rs_user();//处理查询结果
} catch (SQLException | ClassNotFoundException e) {
Log.v("SQL异常",e.getMessage());
tv_ts1.post(() -> tv_ts1.setText(e.getMessage()));
}
}).start();
}));
}
//处理查询结果
@SuppressLint("SetTextI18n")
private void rs_user() throws SQLException {
rs.next();
String a = rs.getString(1);
String b = rs.getString(2);
String c = rs.getString(3);
String d = rs.getString(4);
String f = rs.getString(6);
String g = rs.getString(7);
String h = rs.getString(8);
tv_ts1.post(() -> tv_ts1.setText(a + "\n" + b + "\n" + c + "\n" + d + "\n" + f + "\n" + g + "\n" + h));
}
//查询并返回结果
private boolean rtnSQL(String sql) throws SQLException, ClassNotFoundException {
if (conSQL()) {
PreparedStatement ps = con.prepareStatement(sql);
ps.execute();
rs = ps.getResultSet();
rs.last(); //移到最后一行
int rowCount = rs.getRow(); //得到当前行号,也就是记录数
if (rowCount > 0) {
rs.beforeFirst(); //如果还要用结果集,就把指针再移到初始化的位置
return true;
} else {
tv_ts1.post(() -> tv_ts1.setText("未查询到结果"));
return false;
}
}
return false;
}
//连接数据库
private boolean conSQL() throws ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
try {
String url = "***";
String name = "***";
String password = "***";
con = DriverManager.getConnection(url, name, password);
} catch (SQLException e) {
e.printStackTrace();
}
if (con != null) {
return true;
} else {
tv_ts1.post(() -> tv_ts1.setText("数据库未连接"));
return false;
}
}
}