Android 使用MySQL直接訪問數據庫


轉  https://www.cnblogs.com/jerrywublogs/p/7127641.html

 

在實際項目中,一般很少直接訪問MySQL數據庫,一般情況下會通過http請求將數據傳送到服務端,然后在服務端連接mysql數據庫。

在android 中,會通過使用Jdbc 連接MySQL 服務器

復制代碼
public class MySqlHelp {
public static boolean InsertSql(String Bc,String lr,String rr,String TestDate)
        {
            com.yy.eye.lib.DB.MySqlSetting mySqlSetting=mDBUtil.queryFirstOrDefault();
            String url_1="jdbc:mysql://127.0.0.1:3306/dbName";
            String UserName_1="abc";
            String pass_1="abc";
        try {
            Class.forName("com.mysql.jdbc.Driver");
            java.sql.Connection cn= DriverManager.getConnection(url_1,UserName_1,pass_1);
            String sql = "INSERT INTO checkresult(bc,lf,ft,td,)Values("+Bc+","+lr+","+rr+","+TestDate")" ;
Statement st=(Statement)cn.createStatement(); result=st.execute(sql); result=true; cn.close(); st.close(); } catch (ClassNotFoundException e) { result=false; // e.printStackTrace(); } catch (SQLException e) { //e.printStackTrace(); result=false; } return result; }
}
復制代碼

 需要注意的是使用jdbc需要賦予項目權限

在AndroidManifest.xml 中,添加

<uses-permission android:name="android.permission.INTERNET"/>

在調用Mysql時,需要使用線程

復制代碼
 new Thread(new Runnable() {
            @Override
            public void run() {
     flag1= MySqlHelp.InsertSql(bc,lR,rR,dt);
                    Message msg = Message.obtain();
                    msg.what = 0;
                    Handler.sendMessage(msg);
            }
        }).start();
復制代碼

線程執行后,可以使用handle作信息處理

復制代碼
 private Handler Handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            if (msg.what == 0 ) {
                Toast.makeText(ViewTest.this, "提交成功", Toast.LENGTH_SHORT).show();
                InitEye();
            }
        }
    };
復制代碼

 在build.gradle 的dependencies中添加

compile files('libs/mysql-connector-java-5.0.8-bin.jar')

 程序包需要手動下載

其它參考:

Android 連接MySQL數據庫並進行增刪改查操作

轉 https://blog.csdn.net/weixin_37730482/article/details/77984417


1.Android 連接MySQL數據庫

public class DBOpenHelper {

private static String driver = "com.mysql.jdbc.Driver";//MySQL 驅動
private static String url = "jdbc:mysql://IP:3306/數據庫";//MYSQL數據庫連接Url
private static String user = "root";//用戶名
private static String password = "root";//密碼

/**
* 連接數據庫
* */

public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driver);//獲取MYSQL驅動
conn = (Connection) DriverManager.getConnection(url, user, password);//獲取連接
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

/**
* 關閉數據庫
* */

public static void closeAll(Connection conn, PreparedStatement ps){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

}

/**
* 關閉數據庫
* */

public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

}


2.增刪改查

public class DBService {

private Connection conn=null; //打開數據庫對象
private PreparedStatement ps=null;//操作整合sql語句的對象
private ResultSet rs=null;//查詢結果的集合

//DBService 對象
public static DBService dbService=null;

/**
* 構造方法 私有化
* */

private DBService(){

}

/**
* 獲取MySQL數據庫單例類對象
* */

public static DBService getDbService(){
if(dbService==null){
dbService=new DBService();
}
return dbService;
}


/**
* 獲取要發送短信的患者信息 查
* */

public List<User> getUserData(){
//結果存放集合
List<User> list=new ArrayList<User>();
//MySQL 語句
String sql="select * from user";
//獲取鏈接數據庫對象
conn= DBOpenHelper.getConn();
try {
if(conn!=null&&(!conn.isClosed())){
ps= (PreparedStatement) conn.prepareStatement(sql);
if(ps!=null){
rs= ps.executeQuery();
if(rs!=null){
while(rs.next()){
User u=new User();
u.setId(rs.getString("id"));
u.setName(rs.getString("name"));
u.setPhone(rs.getString("phone"));
u.setContent(rs.getString("content"));
u.setState(rs.getString("state"));
list.add(u);
}
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
DBOpenHelper.closeAll(conn,ps,rs);//關閉相關操作
return list;
}

/**
* 修改數據庫中某個對象的狀態 改
* */

public int updateUserData(String phone){
int result=-1;
if(!StringUtils.isEmpty(phone)){
//獲取鏈接數據庫對象
conn= DBOpenHelper.getConn();
//MySQL 語句
String sql="update user set state=? where phone=?";
try {
boolean closed=conn.isClosed();
if(conn!=null&&(!closed)){
ps= (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1,"1");//第一個參數state 一定要和上面SQL語句字段順序一致
ps.setString(2,phone);//第二個參數 phone 一定要和上面SQL語句字段順序一致
result=ps.executeUpdate();//返回1 執行成功
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//關閉相關操作
return result;
}

/**
* 批量向數據庫插入數據 增
* */

public int insertUserData(List<User> list){
int result=-1;
if((list!=null)&&(list.size()>0)){
//獲取鏈接數據庫對象
conn= DBOpenHelper.getConn();
//MySQL 語句
String sql="INSERT INTO user (name,phone,content,state) VALUES (?,?,?,?)";
try {
boolean closed=conn.isClosed();
if((conn!=null)&&(!closed)){
for(User user:list){
ps= (PreparedStatement) conn.prepareStatement(sql);
String name=user.getName();
String phone=user.getPhone();
String content=user.getContent();
String state=user.getState();
ps.setString(1,name);//第一個參數 name 規則同上
ps.setString(2,phone);//第二個參數 phone 規則同上
ps.setString(3,content);//第三個參數 content 規則同上
ps.setString(4,state);//第四個參數 state 規則同上
result=ps.executeUpdate();//返回1 執行成功
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//關閉相關操作
return result;
}


/**
* 刪除數據 刪
* */

public int delUserData(String phone){
int result=-1;
if((!StringUtils.isEmpty(phone))&&(PhoneNumberUtils.isMobileNumber(phone))){
//獲取鏈接數據庫對象
conn= DBOpenHelper.getConn();
//MySQL 語句
String sql="delete from user where phone=?";
try {
boolean closed=conn.isClosed();
if((conn!=null)&&(!closed)){
ps= (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1, phone);
result=ps.executeUpdate();//返回1 執行成功
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//關閉相關操作
return result;
}

}
---------------------

小白通過JDBC在AndroidStudio一步步來訪問MYSQL數據庫

 

 

Android Studio使用JDBC遠程連接mysql的注意事項(附示例)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM