我遇到錯(cuò)誤代碼“java.sql.SQLNonTransientConnectionException:無法創(chuàng)建與數(shù)據(jù)庫服務(wù)器的連接”的問題。我正在嘗試使用 JDBC 與數(shù)據(jù)庫建立連接,憑據(jù)拼寫正確。您能幫我檢查一下這個(gè)項(xiàng)目中可能出現(xiàn)的問題嗎?
package com.example.daily.db; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import com.example.daily.R; import com.mysql.cj.protocol.Resultset; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class controler extends AppCompatActivity { private controler controlador; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tercera); controlador = new controler(); } public static void micontroler (){ String usuario = "root"; String password = "Prueb@1"; String url = "jdbc:mysql://localhost:3306/daily_db"; Connection conexion; Statement statement; Resultset rs; try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } try { conexion = DriverManager.getConnection(url,usuario,password); statement = conexion.createStatement(); statement.executeUpdate("INSERT INTO USUARIOS(EMAIL,NOMBRES,APELLIDOS,APODO,FECHA_NACIMIENTO) VALUES ('Teste','TESTn','TESTa','TESTp','14/06/22')"); } catch (SQLException e) { throw new RuntimeException(e); } } }
我檢查了連接,重寫了代碼,將控制器添加到了清單中。
理想情況下,當(dāng)連接字符串錯(cuò)誤時(shí)會(huì)出現(xiàn)此問題。您可以檢查一下形成的連接字符串的格式是否正確。
mysql jdbc 連接的預(yù)期連接字符串如下,
jdbc:mysql://localhost:3306/daily_db?user=root&password=Prueb@1&serverTimezone=UTC
請(qǐng)參考https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-jdbc-url-format.html 有關(guān)連接字符串的更多詳細(xì)信息。
此外,請(qǐng)確保數(shù)據(jù)庫已啟動(dòng)并在代碼中提供的端口上運(yùn)行,即 localhost:3306。