Java通過JDBC對數據庫的連接操作其通用操作爲:
String username;
String password;
String databaseURL;
Class.forName("JDBCDriverClass");
Connection connection=DriverManager.getConnection(databaseURL,username,password);
MySQL 連接:
Class.forName("com.mysql.jdbc.Driver");
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/databasename", "root", " ");
SQLServer連接 :
Class.forName('com.microsoft.jdbc.sqlserver.SQLServerDriver');
String url='jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=databasename';
String user='sa';
String password='' ";
Connection conn= DriverManager.getConnection(url,user,password);
Access(通過JDBC-ODBC橋)連接:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection connection=DriverManager.getConnection("jdbc:odbc:DataSource", "username", "password");
Oracle連接 :
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection=DriverManager.getConnectio("jdbc:oracle:thin:@hostname:port#:oracleDBSID", "0", "0");
創建語句:
Statement statement=connection.createStatement();
執行插入更新等:int count=statement.executeUpdate("create table/insert into/update/delete..."); 返回影響的行數。
執行查詢語句:ResultSet resultset=statement.executeQury("select..."); 返回ResultSet。
處理結果(ResultSet的處理):
while(resultset.next()){
...
resultset.getString/getInt/getDouble...(列序號); 如resultset.getString(1),resultset.getDouble(3)... 列序號
從1開始,第一列爲1,第二列爲2...
resultset.getString/getInt/getDouble...("列名"); 如resultset.getString("SName"),resultset.getInt("S#")...
...
}
批處理:
statement.addBatch("insert into ...");
statement.addBatch("create table...");
statement.addBatch("update...");
...
int count[ ]=statement.executeBatch(); 返回影響行數的數組。
預處理語句:
預處理語句接口PreparedStatement是Statement的接口拓展。
PreparedStatement/Statement pstmt=connection.prepareStatement("insert into student(S#,SName,Age,Sex)"
values(?,?,?,?));
其中?爲佔位符,佔位符位置從1開始,第一個?爲第一位,的二個?爲第二位...
佔位符參數的設置爲:pstmt.setX(int index,X value); index爲?的索引,X爲參數類型如String,int ,double等等。
對上述創建的預處理語句執行如下:
pstmt.setInt(1,0755010100);
pstmt.setString(2,"jack");
pstem.setInt(3,20);
pstmt.setString(4,"man");
int count=pstmt.executeUpdate();
對MySQL的連接例子:
package JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MySQLJdbcDemo {
public static void main(String[] args){
MySQLJdbcDemo demo=new MySQLJdbcDemo();
}
private Connection connection;
private Statement statement;
private ResultSet resultset;
private PreparedStatement pstmt;
public MySQLJdbcDemo() {
try {
//數據庫的連接
Class.forName("com.mysql.jdbc.Driver");
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
"root", "000000");
//語句塊與預處理語句塊的定義
statement=connection.createStatement();
pstmt=connection.prepareStatement("select * from student where sex=?");
//結果的處理
resultset=statement.executeQuery("select * from student");
while(resultset.next()){
System.out.print(resultset.getString(1)+" ");
System.out.print(resultset.getString("name")+" ");
System.out.print(resultset.getInt(3)+" ");
System.out.print(resultset.getString("sex")+"\t");
}
//批處理
statement.addBatch("insert into student values(0755010137,'DDL',21,'m')");
statement.addBatch("insert into student values(0755010101,'XWL',22,'m')");
statement.executeBatch();
//預處理語句
pstmt.setString(1, "m");
resultset=pstmt.executeQuery();
while(resultset.next()){
System.out.print(resultset.getString(1)+" ");
System.out.print(resultset.getString("name")+" ");
System.out.print(resultset.getInt(3)+" ");
System.out.print(resultset.getString("sex")+"\t");
}
pstmt.setString(1, "w");
resultset=pstmt.executeQuery();
while(resultset.next()){
System.out.print(resultset.getString(1)+" ");
System.out.print(resultset.getString("name")+" ");
System.out.print(resultset.getInt(3)+" ");
System.out.print(resultset.getString("sex")+"\t");
}
} catch (SQLException e) {
System.out.println("SQLException");
} catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException");
}
}
}