******************************************************1**********************************************************
1 import java.sql.DriverManager; 2 import java.sql.ResultSet; 3 import java.sql.SQLException; 4 import java.sql.Connection; 5 import java.sql.Statement; 6 7 8 public class MysqlDemo { 9 public static void main(String[] args) throws Exception { 10 Connection conn = null; 11 String sql; 12 // MySQL的JDBC URL編寫方式:jdbc:mysql://主機名稱:連接端口/數據庫的名稱?參數=值 13 // 避免中文亂碼要指定useUnicode和characterEncoding 14 // 執行數據庫操作之前要在數據庫管理系統上創建一個數據庫,名字自己定, 15 // 下面語句之前就要先創建javademo數據庫 16 String url = "jdbc:mysql://localhost:3306/javademo?" 17 + "user=root&password=root&useUnicode=true&characterEncoding=UTF8"; 18 19 try { 20 // 之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來, 21 // 可以通過Class.forName把它加載進去,也可以通過初始化來驅動起來,下面三種形式都可以 22 Class.forName("com.mysql.jdbc.Driver");// 動態加載mysql驅動 23 // or: 24 // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver(); 25 // or: 26 // new com.mysql.jdbc.Driver(); 27 28 System.out.println("成功加載MySQL驅動程序"); 29 // 一個Connection代表一個數據庫連接 30 conn = DriverManager.getConnection(url); 31 // Statement里面帶有很多方法,比如executeUpdate可以實現插入,更新和刪除等 32 Statement stmt = conn.createStatement(); 33 sql = "create table student(NO char(20),name varchar(20),primary key(NO))"; 34 int result = stmt.executeUpdate(sql);// executeUpdate語句會返回一個受影響的行數,如果返回-1就沒有成功 35 if (result != -1) { 36 System.out.println("創建數據表成功"); 37 sql = "insert into student(NO,name) values('2012001','陶偉基')"; 38 result = stmt.executeUpdate(sql); 39 sql = "insert into student(NO,name) values('2012002','周小俊')"; 40 result = stmt.executeUpdate(sql); 41 sql = "select * from student"; 42 ResultSet rs = stmt.executeQuery(sql);// executeQuery會返回結果的集合,否則返回空值 43 System.out.println("學號\t姓名"); 44 while (rs.next()) { 45 System.out 46 .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int類型可以用getInt() 47 } 48 } 49 } catch (SQLException e) { 50 System.out.println("MySQL操作錯誤"); 51 e.printStackTrace(); 52 } catch (Exception e) { 53 e.printStackTrace(); 54 } finally { 55 conn.close(); 56 } 57 58 } 59 60 }
******************************************2*****************************************
1 DBHelper.java 2 package com.hu.demo; 3 4 import java.sql.Connection; 5 import java.sql.DriverManager; 6 import java.sql.PreparedStatement; 7 import java.sql.SQLException; 8 9 public class DBHelper { 10 public static final String url = "jdbc:mysql://127.0.0.1/student"; 11 public static final String name = "com.mysql.jdbc.Driver"; 12 public static final String user = "root"; 13 public static final String password = "root"; 14 15 public Connection conn = null; 16 public PreparedStatement pst = null; 17 18 public DBHelper(String sql) { 19 try { 20 Class.forName(name);//指定連接類型 21 conn = DriverManager.getConnection(url, user, password);//獲取連接 22 pst = conn.prepareStatement(sql);//准備執行語句 23 } catch (Exception e) { 24 e.printStackTrace(); 25 } 26 } 27 28 public void close() { 29 try { 30 this.conn.close(); 31 this.pst.close(); 32 } catch (SQLException e) { 33 e.printStackTrace(); 34 } 35 } 36 }
1 Demo.java 2 package com.hu.demo; 3 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 7 public class Demo { 8 9 static String sql = null; 10 static DBHelper db1 = null; 11 static ResultSet ret = null; 12 13 public static void main(String[] args) { 14 sql = "select *from stuinfo";//SQL語句 15 db1 = new DBHelper(sql);//創建DBHelper對象 16 17 try { 18 ret = db1.pst.executeQuery();//執行語句,得到結果集 19 while (ret.next()) { 20 String uid = ret.getString(1); 21 String ufname = ret.getString(2); 22 String ulname = ret.getString(3); 23 String udate = ret.getString(4); 24 System.out.println(uid + "\t" + ufname + "\t" + ulname + "\t" + udate ); 25 }//顯示數據 26 ret.close(); 27 db1.close();//關閉連接 28 } catch (SQLException e) { 29 e.printStackTrace(); 30 } 31 } 32 33 }
*********************************************3********************************************************
1 /*JDBC 2 3 1. 在Java中,軟件功能都是由類來完成的。 4 5 2. 用於操作數據庫的類統稱為JDBC(java database connective) 6 7 3. 數據庫產品比較多(mysql,oracle,sqlserver),java並沒有提供訪問數據庫的JDBC類,這些類都是由數據庫廠商提供的。 8 9 4. Java只提供了訪問數據庫的接口,數據庫廠商的類實現了接口。 10 11 5. 在java中操作數據庫需要導入數據庫廠商提供的類,這些類通常被放在以.jar為擴展名的文件中,這個文件稱為jar文件。 12 13 6. 數據庫操作通常指的是(CRUD),其本質就是java向數據庫中發送sql語句,然后在數據庫中執行sql語句 。 14 15 7. 完成數據庫操作需要以下接口配合完成 16 17 a) DriverManager 類驅動程序 18 19 b) Connection 接口連接數據庫的類 20 21 c) Statement 接口執行sql語句的類 22 23 d) ResultSet 接口保存結果集的類 24 25 JDBC連接mysql數據庫代碼 26 */ 27 import java.sql.*; 28 public class Insert { 29 public static void main(String[] args) { 30 Connection conn =null;//conn用於連接數據庫 31 Statement stmt = null;//stmt用於發送sql語句到數據庫並執行sql語句 32 //localhost:表示數據庫服務器地址,如192.168.0.1 33 //3306表示端口號 34 //test是數據庫名稱 35 //user是數據庫用戶名 36 //password是數據庫的密碼 37 String connectionString = "jdbc:mysql://localhost:3306/test?user=root&password=root"; 38 39 try { 40 //將數據驅動程序類加載到內存中 41 Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 42 43 //通過驅動程序管理器DriverManager獲取連接對象conn,conn連接的服務器和數據庫信息在connectionString 44 conn = DriverManager.getConnection(connectionString); 45 stmt = conn.createStatement(); 46 String sql ="insert into mytable(username,age) values('色即是空',28)"; 47 48 //將sql語句發送到test數據中,並執行,i是影響的行數 >0表示成功 否則表示失敗 49 int i = stmt.executeUpdate(sql); 50 if(i>0){ 51 System.out.println("哈哈,添加成功啦"); 52 }else{ 53 System.out.println("哈哈,添加!!!!!成功啦"); 54 } 55 } catch (InstantiationException e) { 56 e.printStackTrace(); 57 } catch (IllegalAccessException e) { 58 e.printStackTrace(); 59 } catch (ClassNotFoundException e) { 60 e.printStackTrace(); 61 } catch (SQLException e) { 62 e.printStackTrace(); 63 } 64 65 } 66 }
********************************4***************************
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.SQLException; 4 import java.sql.ResultSet; 5 import java.sql.Statement; 6 import java.sql.*; 7 8 public class BaseConnection { 9 private Connection con = null; 10 protected Connection getCon(){ 11 ResultSet rs=null; Statement stmt = null; 12 try { 13 Class.forName("org.gjt.mm.mysql.Driver"); 14 String url="jdbc:mysql://192.168.0.10/數據庫名?user=USR&password=PWD"; 15 conn = DriverManager.getConnection(url); 16 17 stmt = conn.createStatement(); 18 } catch (ClassNotFoundException e) { 19 e.printStackTrace(); 20 } catch (SQLException e) { 21 e.printStackTrace(); 22 } 23 return con; 24 } 25 } 26 /* 27 1、Oracle8/8i/9i數據庫(thin模式) 28 Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 29 String url="jdbc:oracle:thin:@localhost:1521:orcl"; 30 //orcl為數據庫的SID 31 String user="test"; 32 String password="test"; 33 Connection conn= DriverManager.getConnection(url,user,password); 34 35 36 2、DB2數據庫 37 Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); 38 String url="jdbc:db2://localhost:5000/sample"; 39 //sample為你的數據庫名 40 String user="admin"; 41 String password=""; 42 Connection conn= DriverManager.getConnection(url,user,password); 43 44 45 3、Sql Server7.0/2000數據庫 46 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 47 String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; 48 //mydb為數據庫 49 String user="sa"; 50 String password=""; 51 Connection conn= DriverManager.getConnection(url,user,password); 52 53 54 4、Sybase數據庫 55 Class.forName("com.sybase.jdbc.SybDriver").newInstance(); 56 String url =" jdbc:sybase:Tds:localhost:5007/myDB"; 57 //myDB為你的數據庫名 58 Properties sysProps = System.getProperties(); 59 SysProps.put("user","userid"); 60 SysProps.put("password","user_password"); 61 Connection conn= DriverManager.getConnection(url, SysProps); 62 63 64 5、Informix數據庫 65 Class.forName("com.informix.jdbc.IfxDriver").newInstance(); 66 String url = 67 "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; 68 user=testuser;password=testpassword"; 69 //myDB為數據庫名 70 Connection conn= DriverManager.getConnection(url); 71 72 73 6、MySQL數據庫 74 Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 75 String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" 76 //myDB為數據庫名 77 Connection conn= DriverManager.getConnection(url); 78 79 80 7、PostgreSQL數據庫 81 Class.forName("org.postgresql.Driver").newInstance(); 82 String url ="jdbc:postgresql://localhost/myDB" 83 //myDB為數據庫名 84 String user="myuser"; 85 String password="mypassword"; 86 Connection conn= DriverManager.getConnection(url,user,password);*/
***********************************5**********************************
1 JDBC連接MySQL(假設數據庫和jdk環境已經安裝好): 2 加載及注冊JDBC驅動程序 3 Class.forName("com.mysql.jdbc.Driver"); 4 5 Class.forName("com.mysql.jdbc.Driver").newInstance(); 6 7 JDBC URL 定義驅動程序與數據源之間的連接 8 標准語法: 9 <protocol(主要通訊協議)>:<subprotocol(次要通訊協議,即驅動程序名稱)>:<data source identifier(數據源)> 10 11 MySQL的JDBC URL格式: 12 13 jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][¶m2=value2]…. 14 15 示例:jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password 16 17 常見參數: 18 19 user 用戶名 20 21 password 密碼 22 23 autoReconnect 聯機失敗,是否重新聯機(true/false) 24 25 maxReconnect 嘗試重新聯機次數 26 27 initialTimeout 嘗試重新聯機間隔 28 29 maxRows 傳回最大行數 30 31 useUnicode 是否使用Unicode字體編碼(true/false) 32 33 characterEncoding 何種編碼(GB2312/UTF-8/…) 34 35 relaxAutocommit 是否自動提交(true/false) 36 37 capitalizeTypeNames 數據定義的名稱以大寫表示 38 39 大寫表示 40 41 建立連接對象 42 43 String url="jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password";Connection con = DriverManager.getConnection(url); 44 45 建立SQL陳述式對象(Statement Object) 46 47 Statement stmt = con.createStatement(); 48 49 執行SQL語句 50 51 executeQuery() 52 53 String query = "select * from test"; 54 55 ResultSet rs=stmt.executeQuery(query); 56 57 結果集ResultSet 58 59 while(rs.next()) 60 61 {rs.getString(1);rs.getInt(2);} 62 63 executeUpdate() 64 65 String upd="insert into test (id,name) values(1001,xuzhaori)"; 66 67 int con=stmt.executeUpdate(upd); 68 69 execute() 70 71 示例: 72 73 try 74 75 { 76 77 } 78 79 catch(SQLException sqle) 80 81 { 82 83 } 84 85 finally 86 87 { 88 89 } 90 91 Java類型和SQL類型 技術手冊P421 92 93 PreparedStatement(預編語句) 94 95 PreparedStatement stmt = conn.prepareStatement("insert into test(id,name)values(?,?)"); 96 97 stmt.setInt(1,id); 98 99 stmt.setString(2,name); 100 101 注:一旦設定語句的參數值后,就可以多次執行改語句,直到調用clearParameters()方法將他清除為止 102 103 CallableStatement(預儲程序)技術手冊P430
1 import java.sql.*; 2 publicclass MysqlJdbc { 3 publicstaticvoid main(String args[]) { 4 try { 5 Class.forName("com.mysql.jdbc.Driver"); //加載MYSQL JDBC驅動程序 6 //Class.forName("org.gjt.mm.mysql.Driver"); 7 System.out.println("Success loading Mysql Driver!"); 8 } 9 catch (Exception e) { 10 System.out.print("Error loading Mysql Driver!"); 11 e.printStackTrace(); 12 } 13 try { 14 Connection connect = DriverManager.getConnection( 15 "jdbc:mysql://localhost:3306/test","root","198876"); 16 //連接URL為 jdbc:mysql//服務器地址/數據庫名 ,后面的2個參數分別是登陸用戶名和密碼 17 18 System.out.println("Success connect Mysql server!"); 19 Statement stmt = connect.createStatement(); 20 ResultSet rs = stmt.executeQuery("select * from user"); 21 //user 為你表的名稱 22 while (rs.next()) { 23 System.out.println(rs.getString("name")); 24 } 25 } 26 catch (Exception e) { 27 System.out.print("get data error!"); 28 e.printStackTrace(); 29 } 30 } 31 }
1 import java.sql.*; 2 3 publicclass Myjproject { 4 publicstaticvoid main(String args[]) 5 { 6 try { 7 Class.forName("com.mysql.jdbc.Driver"); //加載MYSQL JDBC驅動程序 8 //Class.forName("org.gjt.mm.mysql.Driver"); 9 System.out.println("Success loading Mysql Driver!"); 10 } 11 catch (Exception e) { 12 System.out.print("Error loading Mysql Driver!"); 13 e.printStackTrace(); 14 } 15 try { 16 Connection connect = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test","root","198876"); 17 18 int num=100; 19 PreparedStatement Statement=connect.prepareStatement("INSERT INTO user VALUES(?,?)"); 20 for(int i=0;i<num;i++) //定義個100次的循環,往表里插入一百條信息。 21 { 22 Statement.setString(1,"chongshi"+i); 23 Statement.setString(2,"bo"+i); 24 Statement.executeUpdate(); 25 } 26 27 // } catch (ClassNotFoundException e) { 28 // TODO Auto-generated catch block 29 // System.out.println("An error has occurred:"+e.toString()); 30 // e.printStackTrace(); 31 }catch(SQLException e) 32 { 33 } 34 } 35 }