赞
踩
在bulid.gradle中的 dependencies项 加入
implementation 'mysql:mysql-connector-java:5.1.49'
在 manifests/AndroidManifest.xml 文件中 加入
<uses-permission android:name="android.permission.INTERNET"/>
- public class JdbcUtils {
- private static JdbcUtils instance;
-
- public static JdbcUtils getInstance() {
- if(instance == null){
- instance = new JdbcUtils();
- }
- return instance;
- }
-
-
- public static Connection getConnection(){
- try{
- Class.forName("com.mysql.jdbc.Driver");
- return DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/数据库名?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true",
- "root",
- "12345678");
- }catch(Exception e){
- e.printStackTrace();
- }
- return null;
- }
-
- public static void close(Connection conn){
- try{
- conn.close();
- }catch(SQLException throwables){
- throwables.printStackTrace();
- }
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Class.forName("com.mysql.jdbc.Driver");
- public class UserDao {
- JdbcUtils jdbcUtil = JdbcUtils.getInstance();
- Connection conn = JdbcUtils.getConnection();
-
- public boolean login(String username, String password) throws SQLException{
- String sql = "SELECT * from userInfo where username= ? and password= ?";
- if(conn == null){
- Log.i("error", "无数据链接");
- return false;
- }else {
- try {
- PreparedStatement ps = conn.prepareStatement(sql);
- ps.setString(1, username);
- ps.setString(2, password);
- ResultSet rs = ps.executeQuery();
- Log.i("rs", "result:"+rs.toString());
- return rs.next();
- } catch (SQLException e) {
- e.printStackTrace();
- return false;
- }
-
- }
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
其中sql语句 请根据你的实际情况编写。
- public class User {
- private String username;
- private String password;
-
- public User(String username, String password) {
- this.username = username;
- this.password = password;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
实体类 请根据自身数据库设置编写
- public void onClick(View v) {
- new Thread(new Runnable() {
-
- @Override
- public void run() {
- String id = et_id.getText().toString().trim();
- String pwd = et_pwd.getText().toString().trim();
- if (id.equals("") || pwd.equals("")) {
- Looper.prepare();
- Toast toast = Toast.makeText(MainActivity.this, "输入不能为空!", Toast.LENGTH_SHORT);
- toast.show();
- Looper.loop();
- }
- UserDao ud = new UserDao();
- Boolean result;
- try {
- result = ud.login(id, pwd);
-
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- Looper.prepare();
- Toast toast;
- if (!result) {
- toast = Toast.makeText(MainActivity.this, "用户名不存在或密码错误!", Toast.LENGTH_SHORT);
- } else {
- toast = Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT);
- }
- toast.show();
- Looper.loop();
- }
- }).start();
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
其他布局文件 或者 变量名请根据实际情况更改。
- /**
- * @author Kevin Wang
- * 使用5.1.49版本连接器,用com.mysql.jdbc.Driver作为ClassName
- * MySQL Server : 8.0.30
- * 一直出现conn null 的原因是:
- * 1. 连接器版本问题 -> 在build.gradle中加入
- * implementation 'mysql:mysql-connector-java:5.1.49' 依赖项
- * 2. 数据库访问需要新开一个线程使用否则会网络超时,主线程杀死连接,返回null
- * 3. 联网权限未开启 -> 需要在manifests/AndroidManifest.xml加入
- * <uses-permission android:name="android.permission.INTERNET"/>
- * 4. 数据库url问题,如果使用localhost或者127.0.01 安卓模拟器会默认把手机地址当作前面两个地址
- * -> 将ip改为模拟器连接wifi的网关10.0.2.2 或者 局域网中电脑的ip地址即可
- *
- * */
文章为作者本人学习过程中总结的内容,内容或逻辑质量不高。 若有问题,还请各位读者斧正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。