window下的java程式連線linux系統的mysql資料庫
實現的功能:window下連線linux的mysql資料庫
準備的環境:
windows:1.已經編寫好的連線資料庫的java測試程式:
package com.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * ResultSet結果集的基本用法(executeQuery()將會返回ResultSet結果集) * @author zanzan * */ public class Demo2 { public static void main(String[] args){ Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); long start = System.currentTimeMillis(); conn = DriverManager.getConnection("jdbc:mysql://與linux的ip對映的域名:對映的埠號/資料庫名稱", "mysql資料庫登陸名", "密碼"); System.out.println(conn); //進行資料庫的查詢 String sql = "select id,name from test where id>?";//?表示佔位符 //建立PraparedStatemen物件進行SQL靜態語句的操作,同時返回PraparedStatememnt物件,匯入PraparedStatement包 ps = conn.prepareStatement(sql); ps.setObject(1, 0); rs = ps.executeQuery(); //將結果集進行遍歷 while(rs.next()){ System.out.println(rs.getInt(1)+"---"+rs.getString(2)); } long end = System.currentTimeMillis(); System.out.println("建立與資料庫的連線所需要的時間"+(end-start)+"ms"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //關閉順序是按照先開後關的原則 if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(ps!=null){ try { ps.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
2.由於是linux是在內網,我使用花生殼將內網的ip對映到域名上,外網通過訪問域名和對應對映的埠號
3.navicat for mysql測試linux資料庫的連線是否成功
linux:
1.vmware下安裝centos6.4
2.通目前下載的主流Linux系統版本基本上都集成了mysql資料庫在裡面
rpm -qa | grep mysql // 這個命令就會檢視該作業系統上是否已經安裝了mysql資料庫
rpm -e --nodeps mysql // 強力刪除模式,如果使用上面命令刪除時,提示有依賴的其它檔案,則用該命令可以對其進行強力刪除
yum list | grep mysql //檢視資料庫
yum install -y mysql-server mysql mysql-deve//通過yum方式安裝mysql資料
通過yum安裝資料庫可以省去很多麻煩
3.用ifconfig得到linux的ip
[[email protected] 桌面]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:88:CD:97 inet addr:<span style="background-color: rgb(255, 0, 0);">192.168.0.116</span> Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe88:cd97/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4281 errors:0 dropped:0 overruns:0 frame:0 TX packets:2053 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3985317 (3.8 MiB) TX bytes:160402 (156.6 KiB)
用navicat測試:
1出現 2003-Can’t connect to MySQL on ’192.168.1.2’(10061);
原因:MySQL不准許遠端連線。
解決方案:
1)在服務端MySQL資料夾下找到my.ini檔案。修改bind-address=127.0.0.1 為 bind-address=0.0.0.0 ;(在MySQL 5的my.ini中未發現此項,則試著新增)
2)重新啟動MySQL服務。(service mysqld restart)
2.出現“1045-Access denied for user [email protected](using password:NO)”
原因:沒有給遠端登入使用者新增所有機器都能訪問的許可權
解決方案:
新增命令如下:
1)grant all on *.* to 使用者名稱@"%" identified by "密碼";
2)flush privileges.
其中:
*.*表示賦予使用者操作伺服器上所有資料庫所有表的許可權;
使用者名稱可以是localhost,這裡我填寫root;
’%'表示從任何地址連線,這裡我填寫對映的域名.
下面是連線結果:
mysql建立的測試表:
eclipse下執行java測試程式:
通過以上的方法,實現了在window下訪問linux的mysql資料庫,連線的時間比較長