精华内容
下载资源
问答
  • Android jdbc连接mysql报错解决方案 (Communications link failure)
    2021-10-07 17:09:47

    Android jdbc连接mysql报错解决方案 (Communications link failure)

    参考文章:

    (1)Android jdbc连接mysql报错解决方案 (Communications link failure)

    (2)https://www.cnblogs.com/ben-future/p/10495903.html


    备忘一下。


    更多相关内容
  • Android JDBC简单使用

    千次阅读 2018-11-05 18:04:06
    一,JDBC 简介 JDBC:java database connectivity java数据库连接 常用的数据库mysql oracle sqlserver sun公司提供了一套jdbc的接口,让数据库厂商实现。   二,JDBC使用: 1,JDBC简单使用  步骤:  1...

    一,JDBC 简介

    JDBC:java database connectivity java数据库连接

    常用的数据库mysql oracle sqlserver

    sun公司提供了一套jdbc的接口,让数据库厂商实现。

     

    二,JDBC使用:

    1,JDBC简单使用

        步骤:

           1),导入jar包   

    public class JDBCTest {

     

       @Test

       public void jdbcTest() {

           try {

              // [1]注册mysql驱动

               //DriverManager.registerDriver(new Driver());    

               Class.forName("com.mysql.jdbc.Driver");

               

               // [2]连接数据库

               // jdbc:subprotocol:subname

               //  URL 固定格式: jdbc:数据库名字// localhost:3306/ lol (本地数据库地址),用户名,密码

               Connection connection = DriverManager.getConnection(

                       "jdbc:mysql://localhost:3306/lol", "root", "1q2w3e");

     

              // [3]创建一个statement对象 类似 库管

               Statement statement = connection.createStatement();

               // [4]执行查询语句

               ResultSet resultSet = statement.executeQuery("select * from student");

               resultSet.next();

               String name = resultSet.getString(2);

               System.out.println("name = "+name);

               

           } catch (Exception e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           }

       }

    }

    2,JDBC类重要的方法:

        【1】DriverManager:注册驱动 告诉当前程序 连接哪个数据库       

                DriverManager.registerDriver(new Driver());

                Class.forName("com.mysql.jdbc.Driver");

                获取连接 :“ DriverManager.getConnection("jdbc:mysql:///mydb1", "root", "1q2w3e");

        【2】Connection: 连接数据库的对象

                获取一个statement                connection.createStatement()

                获取一个preparedStatement

        【3】Statement: 用来执行sql语句 是一个库管对象

                接口 Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。

                方法:

                    executeQuery(String sql)    执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

        【4】ResultSet: 结果集对象 里面有一个光标 默认在第一行之前 调用next方法 就可以向下移动

                接口 ResultSet: 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。

                方法:getString(String columnLabel)   以 Java 编程语言中 String 的形式获取此 ResultSet 对象的当前行中指定列的值。

                          executeUpdate(String sql) 执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。

     

        为什么使用     Class.forName("com.mysql.jdbc.Driver");创建对象:

        // 本身方法也是new Driver。我们用Class去调用免得重复创建对象 Driver 类里自己静态代码块进行加载了自己

     

    3,JDBC简单调用增删改查:

     

    public class JDBCSample {

     

        @Test

        public void add() {

            //插入语句

            try {

                //注册驱动

                Class.forName("com.mysql.jdbc.Driver");

                //链接数据库

                Connection connection = DriverManager.getConnection(

                        "jdbc:mysql://localhost:3306/lol", "root", "1q2w3e");

                //申请对象类似于库管

                Statement statement = connection.createStatement();

                

                int result = statement

                        .executeUpdate("insert into student values(30,'zhaoyun',99,100)");

                if (result > 0) {

                    System.out.println("插入成功");

                } else {

                    System.out.println("插入失败");

                }

     

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

     

        @Test

        public void remove() {

            //删除语句

            try {

                Class.forName("com.mysql.jdbc.Driver");

                Connection connection = DriverManager.getConnection(

                        "jdbc:mysql://localhost:3306/lol", "root", "1q2w3e");

                Statement statement = connection.createStatement();

                int result = statement

                        .executeUpdate("delete from student where id > 20");

                if (result > 0) {

                    System.out.println("删除成功" + result);

                } else {

                    System.out.println("删除失败" + result);

                }

     

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

     

        @Test

        public void update() {

            //更新语句

            try {

                Class.forName("com.mysql.jdbc.Driver");

                Connection connection = DriverManager.getConnection(

                        "jdbc:mysql://localhost:3306/lol", "root", "1q2w3e");

                Statement statement = connection.createStatement();

     

                int result = statement

                        .executeUpdate("update student set english = 100 where id = 30");

                if (result > 0) {

                    System.out.println("更新成功" + result);

                } else {

                    System.out.println("更新失败" + result);

                }

     

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

     

        }

     

        @Test

        public void query() {

            //查询语句

            try {

                Class.forName("com.mysql.jdbc.Driver");

                Connection connection = DriverManager.getConnection(

                        "jdbc:mysql://localhost:3306/lol", "root", "1q2w3e");

                Statement statement = connection.createStatement();

                ResultSet resultSet = statement

                        .executeQuery("select * from student");

     

                while (resultSet.next()) {

                    String id = resultSet.getString(1);

                    String name = resultSet.getString(2);

                    String english = resultSet.getString(3);

                    String math = resultSet.getString(4);

                    

                    System.out.println("id = "+id +" name = "+name + " english = "+english +" math = "+math);

                }

     

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

    }

     

     

    4,JDBC的封装:

        [1]创建配置文件:db.properties 存放路径,帐号,密码。

    className:com.mysql.jdbc.Driver

    url:jdbc:mysql://localhost:3306/lol

    name:root

    pwd:1q2w3e

        [2] 创建Utils getConnection获取对数据库的链接

    public class JDBCUtils {

     

        private static String className;

        private static String url;

        private static String name;

        private static String pwd;

     

        static {

            try {

                //保存本地配置

                Properties properties = new Properties();

                properties.load(new FileInputStream("db.properties"));

                //获取properties 中的字段

                className = properties.getProperty("className");

                url = properties.getProperty("url");

                name = properties.getProperty("name");

                pwd = properties.getProperty("pwd");

     

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

        //获取

        public static Connection getConnection() throws Exception {

            Class.forName(className);

            return DriverManager.getConnection(url, name, pwd);

        }

    }

        [3] 写SQL语句

    public class JDBCUtilsTest {

     

        @Test

        public void add() {

            try {

                Connection connection = JDBCUtils.getConnection();

                Statement statement = connection.createStatement();

                int result = statement.executeUpdate("insert into student values(30,'machao',99,99)");

                System.out.println("result = "+result);

                

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            };

        }

     

        @Test

        public void remove() {

            try {

                Connection connection = JDBCUtils.getConnection();

                Statement statement = connection.createStatement();

                int result = statement.executeUpdate("delete from student where id = 30");

                System.out.println("result = "+result);

                

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            };

        }

     

        @Test

        public void update() {

            try {

                Connection connection = JDBCUtils.getConnection();

                Statement statement = connection.createStatement();

                int result = statement.executeUpdate("update student set english = 100 where id =20");

                System.out.println("result = "+result);

                

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            };

            

        }

     

        @Test

        public void query() {

            try {

                Connection connection = JDBCUtils.getConnection();

                Statement statement = connection.createStatement();

                

                ResultSet resultSet = statement.executeQuery("select * from student");

                

                while(resultSet.next()){

                    String id = resultSet.getString(1);

                    String name = resultSet.getString(2);

                    String english = resultSet.getString(3);

                    String math = resultSet.getString(4);

                    System.out.println("id = "+id +" name = "+name + " english = "+english  +" math = "+math);

                }

                

                

                

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            

        }

    }

     

    5,login登陆查询数据库

     

        *BUG,预编译。占位符。进行编译转义。

     

    展开全文
  • Android使用JDBC连接本地数据库
  • android JDBC直连mysql

    2016-09-23 14:29:27
    android JDBC直连mysql
  • android jdbc直连mysql

    千次阅读 2018-01-03 00:31:55
    有朋友问我怎么做物联网的app,我说一个方式可以直连,另一个用web服务器来跟数据库连接,最后他们决定直...上网找信息结果都是一些错误的比如android 不能直连数据库什么的说法。这些我也不评价了。 这次我用的是androi

    有朋友问我怎么做物联网的app,我说一个方式可以直连,另一个用web服务器来跟数据库连接,最后他们决定直连数据库。

    第二天,朋友说遇到了各种问题,我想不对啊,我以前大二17年的时候很简单就连上了,所以打算给做一个demo。

    结果真的遇到了问题,花了4个小时查原因,最后解决了。上网找信息结果都是一些错误的比如android 不能直连数据库什么的说法。这些我也不评价了。

    这次我用的是android studio。

    1.首先新建项目,helloword就行了。

    2.第二步下载JDBC驱动

    百度查mysql connector java一般第一个就是了

    或者这个链接https://dev.mysql.com/downloads/connector/j/



    下载这个就好了



    问你是否登个录,你有oracle的账号想登就等吧,懒得登就no thanks。

    下载后打开zip


    里面的jar包就是编译好的驱动程序了

    3.导入驱动进工程

    project视图下能看到libs 拖进去就行了


    然后加入dependencies

    项目视图->项目名->右键->open modle setting(f4)


    选择你拖进来的jar包


    4.加载驱动并使用

    驱动是5.1版本,用的是JAVA JDK1.8

    所以要在项目视图->项目名->右键->open modle setting(f4)

    设置


    并且添加jackOption


    本来是直接

    Class.forName("com.mysql.jdbc.Driver");//加载驱动
    java.sql.Connection cn= DriverManager.getConnection("jdbc:mysql://IP:端口/数据库名","用户","密码");//连接
    String sql="select * from a";
    Statement st=(Statement)cn.createStatement();
    ResultSet rs=st.executeQuery(sql);
    结果怎么也连不上

    排除了防火墙,端口不对,用户远程权限还是无法连接

    下面的一个webview是用来测试网络连接的,那时候怀疑是网络问题。


    private TextView text1;
    private WebView webView;
    private String ip="192.168.31.148";
    private Connection connection;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化空间
        TextView text1=(TextView)findViewById(R.id.text1);
        webView = (WebView)findViewById(R.id.web);//new WebView(this);
        webView.loadUrl("http://"+ip);          //调用loadUrl方法为WebView加入链接
        //setContentView(webView);
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
    
                webView.loadUrl(url);
                //返回值为true的时候控制网页在WebView中打开,为false时调用系统浏览器呀第三方浏览器
                return false;
            }
        });
        //启用支持JavaScript
        WebSettings settings=webView.getSettings();
        settings.setJavaScriptEnabled(true);
        //WebView加载页面优先使用缓存加载
        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://192.168.31.168:3306/test?useUnicode=true&characterEncoding=gbk","test","1234");
            //connection = DriverManager.getConnection("jdbc:mysql://192.168.31.168:3306;DatabaseName=test" + "?user=test&password=1234");
            //connection = DriverManager.getConnection("jdbc:mysql://192.168.31.168:3306/test?user=test&password=1234");
            if (connection!=null) {
                try {
                    String sql = "select * from user";        //查询表名为“user”的所有内容
                    Statement stmt = connection.createStatement();        //创建Statement
                    ResultSet rs = stmt.executeQuery(sql);          //ResultSet类似Cursor
    
                    //<code>ResultSet</code>最初指向第一行
                    Bundle bundle = new Bundle();
                    while (rs.next()) {
                        bundle.clear();
                        text1.setText(rs.getString("username"));
                    }
    
                    rs.close();
                    stmt.close();
                } catch (SQLException e) {
    
                } finally {
                    if (connection != null)
                        try {
                            connection.close();
                        } catch (SQLException e) {
                        }
                }
            }
        } catch (ClassNotFoundException e1) {
            text1.setText("驱动初始化失败"+e1);
        } catch (SQLException e1) {
            text1.setText("数据库链接失败"+e1);
        }
    }

    网络访问正常,但是JDBC连接不成功,差点我就怀疑官方BUG了,查官方的JDBC驱动包

    最后 发现要使用多线程才能连接上,好像是从某个API版本后直连就不支持了,需要用子线程进行连接

    code:

    private TextView text1;//即hello word那行的
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text1=(TextView)findViewById(R.id.test1);//获取控件
    
        new Thread(new Runnable() {//新建线程
            @Override
            public void run() {
                try {
                    Log.v("tag","run");//调试信息
                    Class.forName("com.mysql.jdbc.Driver");//加载驱动
                    java.sql.Connection cn= DriverManager.getConnection("jdbc:mysql://192.168.31.168:3306/test","test","1234");//连接
                    String sql="select * from a";//准备语句
                    Statement st=(Statement)cn.createStatement();
                    ResultSet rs=st.executeQuery(sql);//执行
    
                    while(rs.next()){//遍历结果
                        final String mybook=rs.getString("name");//查找字段
                        Log.v("tag",mybook+"");//调试信息
                        text1.post(new Runnable() {//子线程post方法更新UI,否则会FALUT抛出
                            @Override public void run() {
                                text1.setText(""+mybook);//更新textview
                            }
                        });
    
                        Log.i("Mainactivity",mybook);
                    }
                    cn.close();//记得关闭 不然内存泄漏
                    st.close();
                    rs.close();
                    Log.v("tag","end");
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                    text1.setText("驱动初始化失败"+e);
                } catch (SQLException e) {
                    e.printStackTrace();
                    text1.setText("数据库链接失败"+e);
                }
            }
        }).start();//执行线程

    表里的数据就一个1,用来测试的

    完成了,网上很多直连文章都过时了,或者是错误的,也可能是工具原因。

    因为本人目前并不写android和java,但是涉略较广,所以一些理解还是比较浅的,欢迎指正。

    展开全文
  • android通过JDBC连接Mysql数据库

    千次下载 热门讨论 2013-06-04 23:25:44
    android通过JDBC连接Mysql数据库,并将查询结果显示在android手机上.
  • Android JDBC无法正常工作:驱动程序上的ClassNotFoundException我正在尝试在我的Android应用程序中使用JDBC连接到远程数据库来执行插入,查询等。我已成功连接并在不同的JAVA项目中完成这些操作。所以我认为既然...

    Android JDBC无法正常工作:驱动程序上的ClassNotFoundException

    我正在尝试在我的Android应用程序中使用JDBC连接到远程数据库来执行插入,查询等。我已成功连接并在不同的JAVA项目中完成这些操作。所以我认为既然Android是Java,我可以直接移植相关代码,为驱动程序添加相同的构建路径等。但它给了我错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

    我真的不认为这是代码问题,因为相同的代码在Java项目中工作(我只是在main()中执行)。但在此参考它是:String url = "jdbc:mysql://localhost:3306/eventhub_test"; //

    String user = "root";

    String pass = "";

    SQLUtils sqlu = new SQLUtils(url, user, pass);

    //我做的SQLUtils类:public class SQLUtils {private String CONNECTION_URL;private String user;private String pass;private java.sql.Statement stmt; private java.sql.Connection conn;public SQLUtils(String conn_url, String user, String pass) {

    this.CONNECTION_URL = conn_url;

    this.user = user;

    this.pass = pass; }public void init() throws IllegalAccessException, InstantiationException, ClassNotFoundException, SQLException {

    Class.forName ("com.mysql.jdbc.Driver").newInstance ();

    conn = DriverManager.getConnection(CONNECTION_URL, user, pass);

    stmt = conn.createStatement();}}

    所以我真的很困惑。JDBC无法与Android一起使用吗?如果是这样,请告诉我我应该考虑远程MySQL数据库访问的替代方案。

    谢谢。

    展开全文
  • 移动设备中常用的数据库时sqlite数据库,Android设备中也不例外,但是今天我们就来讨论一下如何使用Android连接mysql数据库在实际的...在学习android连接Mysql 数据库前,我们先来复习一下java如何通过jdbc连接Mysql...
  • 2016-11-21 回答用android程序去直连mysql数据库,觉得这样做不好,出于安全等方面考虑。数据库地址,用户名密码,查询sql什么的都存在程序里,很容易被反编译等方法看到。建议把表示层和数据层逻辑分开,数据层对应...
  • 我试图在我的Android应用程序中使用JDBC连接到远程数据库以执行插入,查询等操作。我已经成功连接并在另一个JAVA项目中完成了这些操作。因此,我认为由于Android是Java,因此我可以移植相关代码,为驱动程序添加相同...
  • Android 中进行数据库操作主要有两种方式,一种是使用 Android Database,另一种就是使用 JDBCJDBC 非常类似于 ODBC,但 ODBC 是面向 C 语言的。在 Android Studio 中使用 JDBC 非常简便。接下来,本文以 MySQL...
  • android 通过jdbc连接sql server 2008实现 增,删 改 查功能
  • 侃侃无极这段代码永久运行!由diko(土耳其)创建public void mysql() { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } thrd1 = new Thread(ne...
  • android通过JDBC连接MySQL数据库

    千次阅读 2019-01-16 14:14:30
    先去MySQL官网下载jar包,https://dev.mysql.com/downloads/connector/j/,本来mysql官网已经发布8.0的了,但是8.0的jar包必须得用android8.0以上的系统才能调试,所以这里选择5.0的版本,点击下面红色框下载好 ...
  • 我试图通过SQLite的android手机与局域网上的oracle服务器之间的JDBC连接来执行数据同步。我可以通过手机连接到服务器,并进行查询。我可以用oracle数据库中正确的行数返回结果集,但列中的所有数据都有一个空值。我...
  • android使用jdbc连接mysql问题 起初使用java程序连接过mysql,以为安卓开发中也一样,实际遇到了很多问题。 建议检查以下几个问题: 1.数据库是否可以远程访问 2.驱动版本(建议下载较低的版本) 3.安卓网络权限设置...
  • 编译器:Android studio 数据库:MySQL 8.0.23 jar包:mysql-connector-java-8.0.23.jar[img=https://img-bbs.csdn.net/upload/202101/30/1612014129_364129.png][/img][img=...
  • 我现在正在努力解决一个问题 .... DB是MySql . 我从here导入了数据库连接的jar文件 . 我已将其作为gradle中的依赖... 我可以使用它来存储数据库并使用JDBC检索我的Android应用程序上的数据吗? 我正在尝试的方式是否正确?
  • Android 使用JDBC连接数据库

    千次阅读 2017-01-13 11:33:42
    在大多数Android项目中,数据的读取和保存都是通过调用服务器的接口来实现的,所以对于本地数据库的操作是很少的。但是,在前段时间的项目中,客户提出了要直接连接服务器上的数据库来操作数据,这对于一个Android...
  • 我正在尝试使用android应用中的JDBC连接到SQL Server。我将sqljdbc4.jar导入到我的应用程序中,但是当我进入conn = DriverManager.getConnection(connString);我得到以下错误:连接字符串是jdbc:sqlserver://xxx....
  • jtds 1.3.1下载http://pan.baidu.com/s/1eRoOETO 源码(网上下载的,我测试了一下,成功):package com.androidmysqltest;import java.sql.Connection;import java.sql.DriverManager;...import android....
  • 基于android平台,通过JDBC连接MySQL数据库,实现增删查改操作.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 这是火鸟 jdbc 驱动程序(Jaybird)的一个端口:http://www.firebirdsql.org/en/jdbc-driver/
  • 此示例向您展示如何直接从 Android 连接和读取 MySQL 数据库中的数据。以下步骤和代码片段将向您展示如何做到这一点。 将 MySQL JDBC 驱动程序添加到您的项目依赖项中。打开app/build.gradle文件并添加依赖项。 ....
  • 而且同样的代码,同样的jdbc复制粘贴放在Java里正常,放在Android里就不行。 debug到DriverManager.getConnection("jdbc:mysql://" + ip + ":"+port+"/" + dbName,dataBaseUserName, dataBasePassWord); 进jdbc的...
  • 在上文Android入门案例(一)——简单登录中,...在Android工程中要使用jdbc的话,要导入jdbc的外部jar包,可去官网下载,也可以百度自行下载 2.导入jar包 方式一:可以在项目的build.gradle文件中直接添加如下语...
  • 工具:Android Studio,阿里云服务器ECS上部署的MySQL,mysql-connector-java-5.1.47.jar 问题描述:用putty远程连接云服务器的MySQL,可以操作其数据的增删查改,但是现在需要在手机端进行对数据库MySQL的操作,...
  • Android使用JDBC SSH连接外网数据库.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • sqlite-jdbc1

    2021-06-05 03:57:20
    SQLite JDBC Driver SQLite JDBC, developed by Taro L. Saito, is a library for accessing and creating SQLite database files in Java.Our SQLiteJDBC library requires no configuration since native librari....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,392
精华内容 7,356
关键字:

android jdbc