如何用jdbc将androidstudio连接到mysql

kkbh8khc  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(362)

我已经下载了mysql-java-connector-5.1并将其作为库导入
程序正在编译,但是不管我做什么,都会抛出一个关于连接失败的异常。
我想从应用程序(android studio java)发送数据到存储在amazon(aws)中的sql数据库,我想用raspberry pi(用c++)获取数据。
c++工作得很好。
对于androidstudio,我不能连接到本地主机(mysql工作台),也不能连接到aws。
我在网上看到“getconnection”函数中的“url”参数的模板不多,我使用的是:
对于本地主机:

String url = "jdbc:mysql://<local ip>:<port>/<schema>

对于aws:

String url = "jdbc:mysql://<endpoint given by aws>:<port>/<schema>

他们都不工作请帮忙这是我的代码:

public void test(View view) {

    Connection conn = null;

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    try {

        String url = "jdbc:mysql://192.168.1.17:3306/sys";
        String user = "root";
        String password = "password";

        //local verion - find ip with ifconfig/what is my ip website
        conn = DriverManager.getConnection(url, user, password);

        // Do something with the Connection

    } catch (SQLException ex) {
        // handle any errors
        Log.i("SQLException: " , ex.getMessage());
        Log.i("SQLState: " , ex.getSQLState());
    }

但控制室总是空的。我忘了什么吗?*顺便说一句,我不确定我是否必须使用

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

但我还是用了。
这是printstacktrace结果:system.err:com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionexception:无法创建到数据库服务器的连接。08-10 19:26:58.223 20891-20891/com.example.asaf.sql w/system.err:at java.lang.reflect.constructor.newinstance0(本机方法)08-10 19:26:58.225 20891-20891/com.example.asaf.sql w/system.err:at java.lang.reflect.constructor.newinstance(构造函数)。java:430)08-10 19:26:58.227 20891-20891/com.example.asaf.sql w/system.err:atcom.mysql.jdbc.util.handlenewinstance(util。java:425)08-10 19:26:58.228 20891-20891/com.example.asaf.sql w/system.err:at com.mysql.jdbc.util.getinstance(util。java:408)08-10 19:26:58.230 20891-20891/com.example.asaf.sql w/system.err:at com.mysql.jdbc.sqlerror.createsqlexception(sqlerror)。java:919) 08-10 19:26:58.232 20891-20891/com.example.asaf.sql w/system.err:位于com.mysql.jdbc.sqlerror.createsqlexception(sqlerror)。java:898)08-10 19:26:58.234 20891-20891/com.example.asaf.sql w/system.err:at com.mysql.jdbc.sqlerror.createsqlexception(sqlerror)。java:887)08-10 19:26:58.235 20891-20891/com.example.asaf.sql w/system.err:atcom.mysql.jdbc.sqlerror.createsqlexception(sqlerror。java:861)08-10 19:26:58.238 20891-20891/com.example.asaf.sql w/system.err:at com.mysql.jdbc.connectionimpl.connectonetryonly(connectionimpl。java:2267)08-10 19:26:58.240 20891-20891/com.example.asaf.sql w/system.err:at com.mysql.jdbc.connectionimpl.createnewio(connectionimpl。java:2016) 08-10 19:26:58.241 20891-20891/com.example.asaf.sql w/system.err:位于com.mysql.jdbc.connectionimpl.(connectionimpl。java:776)08-10 19:26:58.243 20891-20891/com.example.asaf.sql w/system.err:at com.mysql.jdbc.jdbc4connection.(jdbc4connection)。java:47)08-10 19:26:58.244 20891-20891/com.example.asaf.sql w/system.err:atjava.lang.reflect.constructor.newinstance0(本机方法)08-10 19:26:58.245 20891-20891/com.example.asaf.sql w/system.err:at java.lang.reflect.constructor.newinstance(构造函数)。java:430)08-10 19:26:58.247 20891-20891/com.example.asaf.sql w/system.err:位于com.mysql.jdbc.util.handlenewinstance(util。java:425) 08-10 19:26:58.248 20891-20891/com.example.asaf.sql w/system.err:位于com.mysql.jdbc.connectionimpl.getinstance(connectionimpl。java:386)08-10 19:26:58.250 20891-20891/com.example.asaf.sql w/system.err:at com.mysql.jdbc.nonregisteringdriver.connect(非注册驱动程序)。java:330)08-10 19:26:58.251 20891-20891/com.example.asaf.sql w/system.err:atjava.sql.drivermanager.getconnection(驱动管理器)。java:569)08-10 19:26:58.252 20891-20891/com.example.asaf.sql w/system.err:at java.sql.drivermanager.getconnection(驱动管理器)。java:219)08-10 19:26:58.254 20891-20891/com.example.asaf.sql w/system.err:at com.example.asaf.sql.mainactivity.test(mainactivity)。java:45) 08-10 19:26:58.255 20891-20891/com.example.asaf.sql w/system.err:at java.lang.reflect.method.invoke(本机方法)08-10 19:26:58.257 20891-20891/com.example.asaf.sql w/system.err:at android.support.v7.app.appcompatviewinflater$declaredonclicklistener.onclick(appcompatviewinflater)。java:288)08-10 19:26:58.258 20891-20891/com.example.asaf.sql w/system.err:atandroid.view.view.performclick(视图。java:5637)08-10 19:26:58.259 20891-20891/com.example.asaf.sql w/system.err:at android.view.view$performclick.run(视图。java:22429)08-10 19:26:58.260 20891-20891/com.example.asaf.sql w/system.err:at android.os.handle.handlecallback(处理程序。java:751)08-10 19:26:58.262 20891-20891/com.example.asaf.sqlw/system.err:在android.os.handler.dispatchmessage(handler。java:95)08-10 19:26:58.263 20891-20891/com.example.asaf.sql w/system.err:at android.os.looper.loop(looper。java:154)08-10 19:26:58.265 20891-20891/com.example.asaf.sql w/system.err:at android.app.activitythread.main(活动线程)。java:6119) 08-10 19:26:58.266 20891-20891/com.example.asaf.sql w/system.err:at java.lang.reflect.method.invoke(本机方法)08-10 19:26:58.267 20891-20891/com.example.asaf.sql w/system.err:at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit)。java:886)08-10 19:26:58.269 20891-20891/com.example.asaf.sql w/system.err:atcom.android.internal.os.zygoteinit.main(zygoteinit。java:776)08-10 19:26:58.272 20891-20891/com.example.asaf.sql w/system.err:原因:android.os.networkonmainthreadexception 08-10 19:26:58.273 20891-20891/com.example.asaf.sql w/system.err:位于android.os.strictmode$androidblockguardpolicy.onnetwork(strictmode)。java:1303) 08-10 19:26:58.273 20891-20891/com.example.asaf.sql w/system.err:at java.net.inet6addressimpl.lookuphostbyname(inet6addressimpl)。java:86)08-10 19:26:58.274 20891-20891/com.example.asaf.sql w/system.err:at java.net.inet6addressimpl.lookupallhostaddr(inet6addressimpl。java:74)08-10 19:26:58.275 20891-20891/com.example.asaf.sql w/system.err:atjava.net.inetaddress.getallbyname(inetaddress。java:752)08-10 19:26:58.275 20891-20891/com.example.asaf.sql w/system.err:at com.mysql.jdbc.standardsocketfactory.connect(标准socketfactory)。java:188)08-10 19:26:58.276 20891-20891/com.example.asaf.sql w/system.err:在com.mysql.jdbc.mysqlio.(mysqlio。java:301) 08-10 19:26:58.277 20891-20891/com.example.asaf.sql w/system.err:位于com.mysql.jdbc.connectionimpl.coreconnect(connectionimpl。java:2188)08-10 19:26:58.277 20891-20891/com.example.asaf.sql w/system.err:at com.mysql.jdbc.connectionimpl.connectonetyonly(connectionimpl。java:2221)

9q78igpj

9q78igpj1#

这里有一个连接到MicrosoftSQLExpress的工作方法的示例

try {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);

            connection = DriverManager.getConnection("jdbc:jtds:sqlserver://replacewithip:port//DBNAME", "User", "Password");       // Connect to database
            if (connection == null) {
                ConnectionResult = "Verify connection";
                Toast.makeText(activity, ConnectionResult, Toast.LENGTH_LONG).show();
            } else {
                //do something with your connection, in this case I executed a query
                ResultSet rs = null;
                String query = "EXEC AppMovil.INITE_Articulos_Familia '" + codigo  + "'";
                Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

                //size = cantidad de rows, metodo para obtener cantidad de rows
                rs = stmt.executeQuery(query);
                ResultSetMetaData rsmtd = rs.getMetaData();
                while(rs.next()){
                    ListaConsultaFamilia item = new ListaConsultaFamilia(
                            rs.getString("Codigo"),
                            rs.getString("Descripcion"),
                            rs.getString("Precio")
                    );
                    listaConsultaFamilias.add(item);
                }

                listaConsultaFamilias.size();

                ConnectionResult = " successful";
                isSuccess = true;

                connection.close();
            }

        }catch (Exception ex)
        {
   //catch error while reading
            Looper.prepare();
            isSuccess = false;
            Toast.makeText(activity, "No existen consultas en el periodo seleccionado", Toast.LENGTH_LONG).show();
            ConnectionResult = ex.getMessage();
        }

相关问题