SpringYep 2021-05-09 21:51 采纳率: 0%
浏览 708

用AndroidStudio开发app连接mysql时报以下异常,求大佬jiu jiu孩子

问题出现在DBUtil.java  21行:

conn = DriverManager.getConnection(Consts.DB_URL, Consts.DB_USER, Consts.DB_PASSWORD);

mysql版本5.5.38 

jar包:

libs/mysql-connector-java-5.1.39-bin.jar

真机调试,华为P20 Pro

尝试过本地数据库和云数据库都报同样的异常

    public final static String DB_URL="jdbc:mysql://localhost:3306/asdb_ali";
    public final static String DB_USER="root";
    public final static String DB_PASSWORD="123456";

public class DBUtil {
    private static final String TAG="DBUtil";
    private static final String JDBC_DRIVER="com.mysql.jdbc.Driver";


    public static HashMap<String, String> getUserByUsername(String username) {

        Connection conn = null;
        Statement st = null;
        HashMap<String, String> map = new HashMap<>();
        try {
            Class.forName(JDBC_DRIVER);
            Log.i("**********************","TEST_1");
            conn = DriverManager.getConnection(Consts.DB_URL, Consts.DB_USER, Consts.DB_PASSWORD);
            Log.i("**********************","TEST_2");
            st = conn.createStatement();
            Log.i("**********************","TEST_3");
            String sql = "select * from t_user where username = \"" + username + "\"";
            System.out.println("SQL:::::::::::::::::::" + sql);
            ResultSet res = st.executeQuery(sql);
            if (res == null) {
                return null;
            } else {
                int cnt = res.getMetaData().getColumnCount();
                res.next();
                for (int i = 1; i <= cnt; ++i) {
                    String field = res.getMetaData().getColumnName(i);
                    map.put(field, res.getString(field));
                }
                res.close();
                st.close();
                conn.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.d(TAG, " 数据操作异常");
        }finally{
            // 关闭资源
            try{
                if(st!=null) st.close();
            }catch(SQLException se2){
            }// 什么都不做
            try{
                if(conn!=null) conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        return map;
    }

}

报一以下异常: 

I/**********************: TEST_1
W/System.err: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
W/System.err:     at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
        at com.mysql.jdbc.Util.getInstance(Util.java:387)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2330)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
        at java.sql.DriverManager.getConnection(DriverManager.java:580)
        at java.sql.DriverManager.getConnection(DriverManager.java:218)
W/System.err:     at com.biyesheji.as.utils.DBUtil.getUserByUsername(DBUtil.java:21)
        at com.biyesheji.as.MainActivity$OnClick.onClick(MainActivity.java:83)
        at android.view.View.performClick(View.java:7192)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:967)
        at android.view.View.performClickInternal(View.java:7166)
        at android.view.View.access$3500(View.java:824)
        at android.view.View$PerformClick.run(View.java:27592)
        at android.os.Handler.handleCallback(Handler.java:888)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8178)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
    Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1565)
        at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
        at java.net.InetAddress.getAllByName(InetAddress.java:1152)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:188)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2251)
W/System.err:     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
    	... 24 more
D/DBUtil:  数据操作异常
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer: disableOutlineDraw is true
I/HwViewRootImpl: removeInvalidNode jank list is null
W/libEGL: EGLNativeWindowType 0x7b3de26010 disconnect failed
W/libEGL: EGLNativeWindowType 0x7b3de28950 disconnect failed
V/ActivityThread: Handle window ActivityRecord{60d72c7 token=android.os.BinderProxy@4b2c599 {com.biyesheji.as/com.biyesheji.as.MainActivity}} visibility: false
D/ZrHung.AppEyeUiProbe: not watching, wait.

 升级jar包到8.0.24,url: jdbc:mysql://localhost:3306/asdb_ali?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false

JDBC_DRIVER="com.mysql.cj.jdbc.Driver"

后出现了以下异常:

V/AudioManager: querySoundEffectsEnabled...
I/**********************: TEST_1
W/System.err: java.sql.SQLNonTransientConnectionException: Could not create connection to database server.
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1006)
W/System.err:     at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823)
        at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453)
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
        at java.sql.DriverManager.getConnection(DriverManager.java:580)
        at java.sql.DriverManager.getConnection(DriverManager.java:218)
        at com.biyesheji.as.utils.DBUtil.getUserByUsername(DBUtil.java:21)
        at com.biyesheji.as.MainActivity$OnClick.onClick(MainActivity.java:83)
        at android.view.View.performClick(View.java:7192)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:967)
        at android.view.View.performClickInternal(View.java:7166)
        at android.view.View.access$3500(View.java:824)
W/System.err:     at android.view.View$PerformClick.run(View.java:27592)
        at android.os.Handler.handleCallback(Handler.java:888)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8178)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
    Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1565)
W/System.err:     at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
        at java.net.InetAddress.getAllByName(InetAddress.java:1152)
        at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:132)
        at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)
        at com.mysql.cj.NativeSession.connect(NativeSession.java:144)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:953)
    	... 20 more
D/DBUtil:  数据操作异常
I/HwViewRootImpl: removeInvalidNode all the node in jank list is out of time
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer: disableOutlineDraw is true
W/libEGL: EGLNativeWindowType 0x7ac67f6790 disconnect failed

之后把jar包换成5.1.48版本的,仍报异常,不知道是不是前面还有哪些地方的错误引起的异常,导致数据库连接引起了异常,现将日志完整贴上(在此非常感谢各位热心的dalao):

 

05/10 09:58:42: Launching 'app' on Physical Device.
App restart successful without requiring a re-install.
$ adb shell am start -n "com.biyesheji.as/com.biyesheji.as.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 28871 on device 'huawei-clt_al00-2SY7N18B08119400'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
D/ActivityThread: Attach thread to application
W/ActivityThread: Application com.biyesheji.as can be debugged on port 8100...
I/om.biyesheji.a: QarthPatchMonintor::Init
    QarthPatchMonintor::StartWatch
I/om.biyesheji.a: QarthPatchMonintor::WatchPackage: /data/hotpatch/fwkhotpatch/
    QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/com.biyesheji.as
    QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/all
    QarthPatchMonintor::Run
I/om.biyesheji.a: QarthPatchMonintor::Reading
    QarthPatchMonintor::CheckNotifyEvent
    QarthPatchMonintor::CheckNotifyEvent before read
I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=com.biyesheji.as#10265#256
I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=com.biyesheji.as#10265#0
I/MultiDex: VM with version 2.1.0 has multidex support
    Installing application
    VM has multidex support, MultiDex support library is disabled.
I/AwareBitmapCacher: init processName:com.biyesheji.as pid=28871 uid=10265
E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@6682ec8
    AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@f4d0b61
D/OpenGLRenderer: disableOutlineDraw is true
V/ActivityThread: callActivityOnCreate
W/om.biyesheji.a: Accessing hidden field Landroid/view/LayoutInflater;->mFactorySet:Z (greylist-max-p, reflection, denied)
W/System.err: java.lang.NoSuchFieldException: No field mFactorySet in class Landroid/view/LayoutInflater; (declaration of 'android.view.LayoutInflater' appears in /system/framework/framework.jar!classes3.dex)
        at java.lang.Class.getDeclaredField(Native Method)
        at com.noober.background.BackgroundLibrary.forceSetFactory2(BackgroundLibrary.java:70)
        at com.noober.background.BackgroundLibrary.inject(BackgroundLibrary.java:44)
        at com.noober.background.BLActivityLifecycleRegister.onActivityCreated(BLActivityLifecycleRegister.java:10)
        at android.app.Application.dispatchActivityCreated(Application.java:380)
W/System.err:     at android.app.Activity.dispatchActivityCreated(Activity.java:1252)
        at android.app.Activity.onCreate(Activity.java:1537)
        at androidx.core.app.ComponentActivity.onCreate(ComponentActivity.java:81)
        at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:149)
        at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:313)
        at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:106)
        at com.biyesheji.as.MainActivity.onCreate(MainActivity.java:35)
        at android.app.Activity.performCreate(Activity.java:8086)
        at android.app.Activity.performCreate(Activity.java:8074)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3755)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3961)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8178)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
V/HwWidgetFactory: : successes to get AllImpl object and return....
I/OverScrollerOptimization: start init SmartSlideOverScroller and get the overscroller config
    get the overscroller config
W/om.biyesheji.a: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
W/om.biyesheji.a: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
D/ActivityThread: add activity client record, r= ActivityRecord{659e01d token=android.os.BinderProxy@d4924e3 {com.biyesheji.as/com.biyesheji.as.MainActivity}} token= android.os.BinderProxy@d4924e3
D/HiTouch_PressGestureDetector: onAttached, package=com.biyesheji.as, windowType=1, mHiTouchRestricted=false
I/iGraphics: [0020080c] pn: com.biyesheji.as, p: 28871
    [0030080c] no spt app: com.biyesheji.as
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
W/Gralloc3: mapper 3.x is not supported
E/: APS:IFLoad:importExternalFunctions, search function createNewHwApsUtils failed, dlsym err:undefined symbol: createNewHwApsUtils
D/: APS:importExternalFunctions OK
I/HwViewRootImpl: removeInvalidNode jank list is null
D/OpenGLRenderer: disableOutlineDraw is true
W/Settings: Setting device_provisioned has moved from android.provider.Settings.Secure to android.provider.Settings.Global.
V/HiTouch_HiTouchSensor: User setup is finished.
I/HwViewRootImpl: removeInvalidNode all the node in jank list is out of time
D/HwAutofillHelper: recordCurrentInfo:0
    inputType = 131073
I/AssistStructure: Flattened final assist data: 1632 bytes, containing 1 windows, 9 views
D/AwareBitmapCacher: handleInit switch not opened pid=28871
D/HwAutofillHelper: recordCurrentInfo:0
    inputType = 129
    inputType is password, now record
V/AudioManager: querySoundEffectsEnabled...
I/**********************: TEST_1
W/System.err: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
        at com.mysql.jdbc.Util.getInstance(Util.java:408)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2266)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2015)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:768)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323)
        at java.sql.DriverManager.getConnection(DriverManager.java:580)
        at java.sql.DriverManager.getConnection(DriverManager.java:218)
        at com.biyesheji.as.utils.DBUtil.getUserByUsername(DBUtil.java:21)
        at com.biyesheji.as.MainActivity$OnClick.onClick(MainActivity.java:83)
        at android.view.View.performClick(View.java:7192)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:967)
        at android.view.View.performClickInternal(View.java:7166)
W/System.err:     at android.view.View.access$3500(View.java:824)
        at android.view.View$PerformClick.run(View.java:27592)
        at android.os.Handler.handleCallback(Handler.java:888)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8178)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
    Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1565)
        at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
        at java.net.InetAddress.getAllByName(InetAddress.java:1152)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:188)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:299)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2187)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2220)
    	... 24 more
D/DBUtil:  数据操作异常
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer: disableOutlineDraw is true
W/libEGL: EGLNativeWindowType 0x7ac6783010 disconnect failed
  • 写回答

5条回答 默认 最新

  • 关注

    你用的是什么版本的mysql数据库,如果是8.0的mysql数据库你要升级jar包的版本就好了。

    评论

报告相同问题?

悬赏问题

  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 hadoop中启动hive报错如下怎么解决