一、装载驱动程序
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//SQL Server 2000的JDBC驱动类名 oracel.jdbc.driver.OracleDriver//Oralce的JDBC驱动类名 com.mysql.jdbc.Driver//MySQL的JDBC驱动类名二、建立连接
Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");
JDBC URL语法:jdbc:subprotocol:subname 协议:子协议:子名词
常用的JDBC URL形式
jdbc:microsoft:sqlserver://localhost:1433;databasename=pubs
jdbc:oracle:thin:@localhost:1521:ORCL
jdbc:mysql://localhost:3306/databasename
/**************************也可以通过JDBC-ODBC桥的方式*********************************************/
sun.jdbc.odbc.JdbcOdbcDriver//驱动类名
jdbc.odbc:datasource_name//JDBC URL
/**********************************************************************************************************/
三、访问数据库
创建表
Statement stmt = con.createStatement();
stmt.executeUpdate("CREATE TABLE COFFEES " +
"(COF_NAME VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT, " +
"SALES INTEGER, TOTAL INTEGER)");
或者
String createTableCoffees = "CREATE TABLE COFFEES " +
"(COF_NAME VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT, " +
"SALES INTEGER, TOTAL INTEGER)";
stmt.executeUpdate(createTableCoffees);
增
Statement stmt = conn.createStatement();
stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) " );
删
改
查
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery( "SELECT * FROM MyTable" );
while ( rs.next() ) {
int numColumns = rs.getMetaData().getColumnCount();
for ( int i = 1 ; i <= numColumns ; i++ ) {
// 与大部分Java API中下标的使用方法不同,字段的下标从1开始
// 当然,还有其他很多的方式(ResultSet.getXXX())获取数据
System.out.println( "COLUMN " + i + " = " + rs.getObject(i) );
}
}
rs.close();
stmt.close();
/****************Java程序员们更倾向于使用PreparedStatement****************************/
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement( "SELECT i.*, j.* FROM Omega i, Zappa j
WHERE i = ? AND j = ?" );
// 使用问号作为参数的标示
// 进行参数设置
// 与大部分Java API中下标的使用方法不同,字段的下标从1开始,1代表第一个问号
// 当然,还有其他很多针对不同类型的类似的PreparedStatement.setXXX()方法
ps.setString(1, "Poor Yorick");
ps.setInt(2, 8008);
// 结果集
rs = ps.executeQuery();
while ( rs.next() ) {
int numColumns = rs.getMetaData().getColumnCount();
for ( int i = 1 ; i <= numColumns ; i++ ) {
// 与大部分Java API中下标的使用方法不同,字段的下标从1开始
// 当然,还有其他很多的方式(ResultSet.getXXX())获取数据
System.out.println( "COLUMN " + i + " = " + rs.getObject(i) );
}
}
catch (SQLException e) {
// 异常处理
}
finally { // 使用finally进行资源释放
try {
rs.close();
ps.close();
} catch( SQLException e){} // 异常处理:忽略close()时的错误
}
/**********************************************************************************************/