zoukankan      html  css  js  c++  java
  • 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的注意事项(附示例)

     

  • 相关阅读:
    【贪心】【堆】Gym
    【并查集】Gym
    【拓扑排序】【bitset】Gym
    【递归】【线段树】【堆】AtCoder Regular Contest 080 E
    【二分图】【并查集】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem L. Canonical duel
    【动态规划】【滚动数组】【bitset】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem J. Terminal
    【二分】【字符串哈希】【二分图最大匹配】【最大流】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem I. Minimum Prefix
    【枚举】【最小表示法】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem F. Matrix Game
    【推导】【构造】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem E. Space Tourists
    【推导】【贪心】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem D. Clones and Treasures
  • 原文地址:https://www.cnblogs.com/it-tsz/p/10847511.html
Copyright © 2011-2022 走看看