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();
即可解決!
新手上場有問題請指出,謝謝!