cat_dog_orange 2023-05-17 10:11 采纳率: 36.4%
浏览 13
已结题

上传数据到云服务器上的数据库但不显示新增的数据,以及在另外一个activity中上传数据时报错:Could not create connection to database server.

在AS中使用mysql5.1.49驱动链接阿里云服务器上的mysql5.7.4数据库,显示上传成功,但数据库中却没有数据,想问一下大家这是因为什么:
jdbc连接工具类:

object JDBCUtil {
    // 可以把几个字符串定义成常量:用户名,密码,URL,驱动类
    private const val USER = "root"
    private const val PWD = "123456Abc"
    private const val URL = "jdbc:mysql://8.130.82.8:3306/InformationCollection?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false"
    private const val DRIVER = "com.mysql.jdbc.Driver"

    /**
     * 得到数据库的连接
     */
    @get:Throws(SQLException::class)
    val connection: Connection
        get() = DriverManager.getConnection(URL, USER, PWD)


    /**
     * 注册驱动(可以省略)
     */
    init {
        try {
            Class.forName(DRIVER)
        } catch (e: ClassNotFoundException) {
            e.printStackTrace()
        }
    }
}

上传数据倒数据库中代码:

private fun uploadMySQL(name: String, path: String,date: String, time: String, weiDu: String, add: String, habit: String, person: String, remark: String
    ) {
        Thread {
            try {
                val conn: Connection = JDBCUtil.connection
                val sql = "insert into PlantInfo values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
                val preStat: PreparedStatement = conn.prepareStatement(sql)
                preStat.setString(1, "_id")
                preStat.setString(2, name)
                preStat.setString(3, path)
                preStat.setString(4, date)
                preStat.setString(5, time)
                preStat.setString(6, weiDu)
                preStat.setString(7, add)
                preStat.setString(8, habit)
                preStat.setString(9, person)
                preStat.setString(10, remark)
//                preStat.executeUpdate()  不注释掉该行代码会报错,注释掉之后可以打印出"mysql", "上传成功"
                Log.e("mysql", "上传成功")
                preStat.close()
                conn.close()
            } catch (e: ClassNotFoundException) {
                e.printStackTrace()
            } catch (e: SQLException) {
                e.printStackTrace()
            }
        }.start()
    }

会打印出"mysql", "上传成功"这句话,但在数据库中看不到新增的数据.PS:在另一个activity中上传信息,会报错:

private fun uploadLiuYanToMYSQL(userInfo: String, phoneInfo:String, message:String) {
        try {
            val conn: Connection = JDBCUtil.connection
            val sql = "insert into LiuYanInfo values(?, ?, ?)"
            val preStat: PreparedStatement = conn.prepareStatement(sql)
            preStat.setString(1, userInfo)
            preStat.setString(2, phoneInfo)
            preStat.setString(3, message)
            preStat.executeUpdate()
            Log.e("mysql", "上传成功")
            preStat.close()
            conn.close()
        } catch (e: ClassNotFoundException) {
            e.printStackTrace()
        } catch (e: SQLException) {
            e.printStackTrace()
        }
    }

报错信息为:

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:403)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        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:403)
        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 JDBCUtil.getConnection(JDBCUtil.kt:15)
        at com.demo2.android.activity.FeedBackActivity.uploadLiuYanToMYSQL(FeedBackActivity.kt:69)
        at com.demo2.android.activity.FeedBackActivity.access$uploadLiuYanToMYSQL(FeedBackActivity.kt:20)
        at com.demo2.android.activity.FeedBackActivity$onCreate$2.onClick(FeedBackActivity.kt:54)
        at android.view.View.performClick(View.java:7558)
        at android.view.View.performClickInternal(View.java:7534)
        at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
        at android.view.View$PerformClick.run(View.java:29661)
        at android.os.Handler.handleCallback(Handler.java:942)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:240)
        at android.os.Looper.loop(Looper.java:351)
        at android.app.ActivityThread.main(ActivityThread.java:8364)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
    Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1667)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:389)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
        at java.net.Socket.connect(Socket.java:646)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
        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)
        ... 26 more
  • 写回答

2条回答 默认 最新

  • 关注

    你有配置安全组规则吗,入方向的端口吗,MySQL有没有端口开放

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月18日
  • 创建了问题 5月17日

悬赏问题

  • ¥20 stm32标准库红外模块
  • ¥15 在国外文献网站里点击view pdf 加载异常缓慢甚至加载不出来。
  • ¥50 python批量提取发票的信息
  • ¥15 mysql安装,初始化数据库失败
  • ¥15 虚幻五引擎内容如何上传至网盘?
  • ¥15 使用mmpose库时出现了问题
  • ¥15 IRI2016模型matlab运行报错
  • ¥50 bat怎么设置电脑后台自动点击网页指定词运行脚本,输入指定网页链接,指定点击词,指定间隔时间,指定网页出现的词,指定网页出现词出现后后点击锁定,放在后台运行不影响前台鼠标工作
  • ¥20 20CrMnMo的高温变形抗力
  • ¥15 RTX3.6 5565驱动中断报错