• 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的注意事项(附示例)

     

  • 相关阅读:
    [POJ 3253] Fence Repair
    [POJ 1422] Air Raid
    [POJ 2195] Going Home
    [POJ 1273] Drainage Ditches
    [BZOJ 1718] Redundant Paths
    [POJ 1041] John's Trip
    [NOI 2003] 逃学的小孩
    __attribute__((noreturn))的用法
    回味经典——uboot1.1.6 之 第二阶段 第三阶段
    回味经典——uboot1.1.6 之 第一阶段
  • 原文地址:https://www.cnblogs.com/it-tsz/p/10847511.html
Copyright © 2020-2023  润新知