Android studio連接mysql出錯,密碼和用戶名沒錯,Navicat上也連接成功可以操作。
百度查到的辦法都試過了都沒用……球球老哥們幫忙看看
代碼:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = MainActivity.class.getSimpleName();
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.sqltestb);
mButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sqltestb:
final Thread thread =new Thread(new Runnable() {
@Override
public void run() {
// 1.加載JDBC驅動
try {
Class.forName("com.mysql.jdbc.Driver");
Log.v(TAG, "加載JDBC驅動成功");
} catch (ClassNotFoundException e) {
Log.e(TAG, "加載JDBC驅動失敗");
return;
}
final String DBURL = "jdbc:mysql://localhost:3306/testtb";
final String DBUSER = "root";
final String DBPASSWORD = "******";
String r = null;
try {
Connection c = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
Log.d(TAG, "Mysql連接成功" );
String sql = "select test_id from test_tb";
PreparedStatement pst = c.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
if (rs.next()) {
r = rs.getString(1);
}
rs.close();
pst.close();
c.close();
} catch (SQLException e) {
Log.e(TAG, "Mysql連接失敗" + e.toString());
e.printStackTrace();
}
報錯:
V/MainActivity: 加載JDBC驅動成功
E/MainActivity: Mysql連接失敗com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
W/System.err: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
W/System.err: The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the 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.SQLError.createCommunicationsException(SQLError.java:988)
uj5u.com熱心網友回復:
這是Android 的程式把, 建議還是轉到 移動開發 >> Android 板塊更好估計是不是連接字串的問題:
final String DBURL = "jdbc:mysql://localhost:3306/testtb";
這相當于連接 手機上的資料庫, 需要換成 資料庫服務器的 ip 把。。。
uj5u.com熱心網友回復:
這是Android 的程式把, 建議還是轉到 移動開發 >> Android 板塊更好
估計是不是連接字串的問題:
final String DBURL = "jdbc:mysql://localhost:3306/testtb";
這相當于連接 手機上的資料庫, 需要換成 資料庫服務器的 ip 把。。。
啊抱歉,板塊這個我不太了解隨便選的
現在不知道能不能改…,然后我mysql是建在電腦里的,應該不算連手機端的資料庫吧?
uj5u.com熱心網友回復:
雖說android也是java編程, 但相信android板塊有更準確,專業的回復,
這次可能改不了。。。
在連接字串里面, localhost 對應于本設備 ---> 手機, 相當于 去 連接 手機 上的 資料庫了, 而不是電腦上的資料庫。
如果要連接 電腦上的資料庫, 應該使用, 電腦的ip
在電腦上用 Navicat 可以連接 是因為, 電腦上, localhost 對應于本設備 , 就是電腦,
簡而言之, localhost 對因于 本設備ip地址
uj5u.com熱心網友回復:
!!我明白問題出在哪兒啦!天哪太感謝啦,我終于連接成功啦
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/272704.html
標籤:Java EE
