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();
即可解决!
新手上场有问题请指出,谢谢!