1. 程式人生 > >Linux下Java呼叫MySql的第一個例子(全過程) 及 MySql改密碼的種種誤區

Linux下Java呼叫MySql的第一個例子(全過程) 及 MySql改密碼的種種誤區

第三步:解壓mysql-connector-java-5.1.24.tar.gz這個檔案到/usr/local/java/。事實上這個目錄是任意的,只不過為了方便。我把jdk和eclipse都安裝到了上面這個目錄下。如下所示:

第四步:新建一個TestMySql工程,右鍵工程---build path---Add External Archives,將上面的mysql-connector-***資料夾下的.jar檔案新增進來。

第五步:登陸到mysql建立一個數據庫yan1,在這個資料庫裡建立表users。相關命令:

    登陸命令:mysql -u root -p;回車輸入密碼

    建庫: create database yan1;

   顯示庫: show databases;

   建表:create table users(userId varchar(8), userName varchar(8));

   插入資料: insert into users values("001", "wenshu");

                      insert into users values("002", "puxian");

   顯示資料:select * from users;

   刪庫: drop database yan1;

第六步:在java裡寫程式,原始碼如下:

package yan.guoqi.testmysql;
import java.sql.*;

public class TestMySql {

	//JDBC驅動位置
	private String driver ="com.mysql.jdbc.Driver";     //這個驅動是預設的
//測試資料庫TestDB的位置 private String url = "jdbc:mysql://localhost:3306/yan1"; //yan1是資料庫的名字 //Mysql的使用者名稱和密碼 private String user = "root"; private String password = "123456"; //連線控制代碼 private Connection conn = null; public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("您好!"); TestMySql test = new TestMySql(); test.test(); } /*Java連線資料庫*/ public void connect() { //載入資料庫JDBC驅動 try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } //利用給定的資料庫位置,使用者名稱和密碼連線資料庫 try { conn = DriverManager.getConnection(url, user, password); if(!conn.isClosed()){ System.out.println("Succeeded connect to the Database"); } } catch (SQLException e) { e.printStackTrace(); } } /*關閉連線*/ public void close() { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /*測試資料庫介面函式*/ public void test() { //連線 connect(); try { //具體如何呼叫Mysql執行特定sql語句 Statement statement = conn.createStatement(); String sql = "select * from users"; //注意這裡的users是建的表的名字
ResultSet rs = statement.executeQuery(sql); //遍歷select結果 while(rs.next()){ //rs.getString(String)獲得對應某條記錄的對應列名的值 System.out.println("Id: "+rs.getString("userId") +"Name:"+rs.getString("userName"));
               //注意userId和userName和建的表裡面的列保持一致
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		close();
	}



}

在控制檯裡就會打印出資訊!

事實上我們可以簡化程式,真正的有效程式碼就四行,簡化後的程式碼如下:

package yan.guoqi.testmysql2;
import java.sql.*;

public class TestMySql {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
       
		try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection ct = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/yan1", "root", "123456");
		  Statement st = ct.createStatement();
		  ResultSet rs = st.executeQuery("select * from users");
		  while(rs.next()){
			  System.out.println("Id: "+ rs.getString(1)+" Name: "+ rs.getString(2));
		  }
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("異常!");
		}
		

	}

}


另外,每次新建工程都要把那個包在path裡面新增以下很不方便。可以將那個mysql-connector-java-5.1.24-bin.jar拷貝到jdk安裝目錄/jre/lib/ext資料夾下就ok了,不用再新增path了。

改密碼的注意事項

假定現在用密碼123456 可以登陸到資料庫,要將密碼改成yanyan。

第一種方式:在終端裡,注意現在還沒有登陸到資料庫,輸入命令mysqladmin -p123456 password yanyan

會出現這麼一句警告:Warning: Using a password on the command line interface can be insecure.這表示已經改成功了。常見的誤區:
      誤區一:用原密碼已經登陸到mysql了,再這麼改就會報錯。一定注意,直接在終端裡,未登陸前改。

      誤區二:將-p123456 寫成 -p 123456.這樣會報錯的,-p後面不能帶空格。

      誤區三:password前面加了一個“-”.也是會報錯。

注意:password和新密碼之間一定要有空格。新密碼可以用""括起來。當有特殊字元時,這個引號是必須的。
      關於改密碼參見
http://blog.csdn.net/sd0902/article/details/8394106,裡面的第二種方法也就是我上面說的幾個誤區,直接用他的命令是會報錯的。參照他的說法,在第一次登陸時在終端裡輸入mysqladmin -u root password "xxxx", 就可以設定密碼為xxxx了。這一點我沒有驗證。注意,他說的是mysqladmin -u root -password ab12
這是錯誤的,password前面不能有“-”.

第二種方式:登陸到mysql後,進行更改

mysql> update mysql.user set password=PASSWORD('yanyan') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

誤區:只運行了第一行命令,沒有flush privileges是改不了密碼的。另,這裡給出的命令一會有大寫的一會有小寫的,不如全弄成小寫的。經驗證完全可行。

    綜合來看我更喜歡第一種改密碼的方式。