Android 开发链接本地mysql

1.加载jar包

在这里插入图片描述
在这里插入图片描述
最后查看项目依赖看到一下效果说明jar包加载成功
在这里插入图片描述

2.baseDao编码

注意在安卓中 的jdbc:mysql://ip:3306/musicdb
ip不可以使用127.0.0.1以及localhost


```java
package com.examplehq.musicdemo.dao;

import android.util.Log;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
/***
 * 数据库驱动
 */
private static String driver="com.mysql.jdbc.Driver";
/**
 * 数据库路径
 * 
 */
private static String url="jdbc:mysql://192.168.1.104:3306/musicdb";
/**
 * 用户名
 */
private static String user="sa";
/**
 * 密码
 */
private static String password="sa";

/**
 * 加载驱动类(只需要加载一次) static{} -- 静态块
 * 
 * 
 */
static{
	try {
		Class.forName(driver);
		Log.i("TAG", "加载驱动成功: ");
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
/**
 * 打开连接  抛出异常 交给调用者处理
 * @return
 * @throws SQLException
 */
public static Connection getConnection() throws SQLException{
	Connection	conn= null;
	Log.i("url", url);
	conn=DriverManager.getConnection(url, user, password);
	Log.i("TAG", "数据库链接成功: ");
	return conn;
	
}
/**
 * 关闭数据库资源从小到大
 * @param conn
 * @param ps
 * @param rs
 */
public void  closeAll(Connection conn, PreparedStatement ps,ResultSet rs) {
	try {
		if (rs!=null) {
			rs.close();
		}if (ps!=null) {
			ps.close();
			
		}if (conn!=null) {
			conn.close();
		}
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}
	
}
public int myExecutteUpdate(String sql,Object...pars){
	int result =0;
	Connection conn=null;
	PreparedStatement ps=null;
	ResultSet rs=null;
	try {
		conn=getConnection();
		ps=conn.prepareStatement(sql);
		if (pars!=null&& pars.length!=0) {
			for (int i = 0; i < pars.length; i++) {
				ps.setObject(i+1, pars[i]);
			}
		}
		result =ps.executeUpdate();
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}finally {
		closeAll(conn, ps, rs);
	}
	return result;
	
	
	
	
}
}

3.配置清单文件

在这里插入图片描述

4.编写实现代码usersDaoImpl


   /**
     * 资源
     * @param users
     * @return
     */
    Connection conn =null;
    PreparedStatement ps=null;
    ResultSet rs=null;
    @Override
  public Users login(Users users) {
        Users us=null;
        try {

            conn=BaseDao.getConnection();
            String sql="SELECT*FROM  users WHERE userNumber =? AND password=? AND state!=0";
            ps=conn.prepareStatement(sql);
            ps.setString(1, users.getUserNumber());
            ps.setString(2, users.getPassword());
            rs=ps.executeQuery();
            if (rs.next()) {
                us=new Users();
                us.setId(rs.getInt("id"));
                us.setUserName(rs.getString("userName"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            closeAll(conn, ps, rs);
        }
        return us;
    }

5.调用login方法(安卓中网络链接须在线程中完成)

 public void onLoginClick(View view) {
        String phone = mInputPhone.getInputStr();
        String pwd =mInputPwd.getInputStr();
        //验证用户输入是否合法
      if (!UersUtils.valdateLogin(this,phone,pwd)){
            return;
        }else {
          //创建一个线程来连接数据库并获取数据库中对应表的数据
          new Thread(new Runnable() {
              @Override
              public void run() {
                  // 调用数据库工具类DBUtils的getInfoByName方法获取数据库表中数据
                  Users us = usersDaoImpl.login(new Users(mInputPhone.getInputStr(), mInputPwd.getInputStr()));
                  if (us != null) {
                      Looper.prepare();
                      Toast.makeText(mContext, "登录成功", Toast.LENGTH_SHORT).show();
                      Looper.loop();
                    
                  } else {
                      Looper.prepare();
                      Toast.makeText(mContext, "登录失败", Toast.LENGTH_SHORT).show();
                      Looper.loop();

                  }
              }
          }).start();
      }

    }

附加使用中遇到的问题:
1、如果mysql没有设置远程链接权限出现1130异常可以在mysql库user表中将host修改成%然后重启Mysql服务

在这里插入图片描述
2.线程中弹窗出现一下异常
在这里插入图片描述

在代码中加入
Looper.prepare();
Toast.makeText(mContext, “登录失败”, Toast.LENGTH_SHORT).show();
Looper.loop();
即可解决!

新手上场有问题请指出,谢谢!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Android 应用程序示例,演示如何使用本地 MySQL 数据库的 Java 代码: 1. 在 MySQL 数据库中创建一个名为 "testdb" 的数据库,并在该数据库中创建一个名为 "users" 的表,用于存储用户信息,包括 id、name 和 email 等字段。 2. 在 Android 应用程序中,使用 JDBC 驱动来连接 MySQL 数据库。以下是一个简单的 Java 代码示例: ```java public class MainActivity extends AppCompatActivity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.text_view); new Thread(new Runnable() { @Override public void run() { try { // JDBC 驱动 Class.forName("com.mysql.jdbc.Driver"); // 连接 MySQL 数据库 String url = "jdbc:mysql://localhost/testdb"; String user = "root"; String password = "password"; Connection conn = DriverManager.getConnection(url, user, password); // 执行 SQL 查询 Statement stmt = conn.createStatement(); String sql = "SELECT id, name, email FROM users"; ResultSet rs = stmt.executeQuery(sql); // 将查询结果转换为字符串格式 StringBuilder sb = new StringBuilder(); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String email = rs.getString("email"); sb.append("id: " + id + ", name: " + name + ", email: " + email + "\n"); } // 在 UI 线程中更新 UI,显示查询结果 runOnUiThread(new Runnable() { @Override public void run() { mTextView.setText(sb.toString()); } }); // 关闭连接 rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }).start(); } } ``` 需要注意的是,在 Android 应用程序中使用本地 MySQL 数据库需要考虑到数据的安全性和稳定性等问题,建议您在开发应用程序之前,先进行充分的调研和测试,确保应用程序能够正常运行和使用。另外,为了保证应用程序的安全性,建议您将数据库连接信息放在服务端,而不是放在客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值