//1.装载驱动包 (需要百度下载各种驱动包)
public void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//2.装载驱动
Class.forName("oracle.jdbc.driver.OracleDriver"); //本题以连接oracle数据库为例
//3.创建连接
conn =
DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORADB", "scott",
"tiger");
//4.创建发送SQL语句的对象:Statement
stmt = conn.createStatement();
//5.进行数据库操作
//int executeUpdate = stmt.executeUpdate("INSERT INTO dept VALUES(50,'人事部门','绵阳')");
//System.out.println(executeUpdate);
// String sql = "UPDATE dept SET LOC='成都' WHERE deptno=50";
// int affectedRow = stmt.executeUpdate(sql);
// System.out.println("影响的行数为:"+affectedRow);
String deleteSql = "DELETE FROM dept WHERE deptno=50";
int affectedRow1 = stmt.executeUpdate(deleteSql);
rs = stmt.executeQuery("SELECT * FROM dept");
//6.处理操作结果
while (rs.next()) {
out.println(rs.getInt(1) + " " + rs.getString(2) +
" " + rs.getString(3) + "<br >");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
} catch (SQLException sqle) {
// TODO: Add catch code
sqle.printStackTrace();
}
out.close();
}
附 : 驱动包以及关键字:
• MySQL(http://www.mysql.com)mm.mysql-2.0.2-bin.jar
Class.forName( "org.gjt.mm.mysql.Driver" );
cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd );
• PostgreSQL(http://www.de.postgresql.org)pgjdbc2.jar
Class.forName( "org.postgresql.Driver" );
cn = DriverManager.getConnection( "jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName", sUsr, sPwd );
• Oracle(http://www.oracle.com/ip/deploy/database/oracle9i/)classes12.zip
Class.forName( "oracle.jdbc.driver.OracleDriver" );
cn = DriverManager.getConnection( "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd );
• Sybase(http://jtds.sourceforge.net)jconn2.jar
Class.forName( "com.sybase.jdbc2.jdbc.SybDriver" );
cn = DriverManager.getConnection( "jdbc:sybase:Tds:MyDbComputerNameOrIP:2638", sUsr, sPwd );
// (Default-Username/Password: "dba"/"sql")
• Microsoft SQLServer(http://jtds.sourceforge.net)
Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
cn = DriverManager.getConnection( "jdbc:jtds:sqlserver://MyDbComputerNameOrIP:1433/master", sUsr, sPwd );
• Microsoft SQLServer(http://www.microsoft.com)
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );
cn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://MyDbComputerNameOrIP:1433;databaseName=master", sUsr, sPwd );
• ODBC
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
Connection cn = DriverManager.getConnection( "jdbc:odbc:" + sDsn, sUsr, sPwd );
• DB2
Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");
String url="jdbc:db2://192.9.200.108:6789/SAMPLE"
cn = DriverManager.getConnection( url, sUsr, sPwd );
注解:1:rs.next() 由Resultset返回的数据集(集合),因此可以用next()遍历;初始化指向数据的前一位。While(rs.next())第一次执行的时候,实际上已经指向数据位了。
2: 当执行sql语句的时候,有修改和查询两种方法。修改(插入,更新,删除)用executeUpdate();方法返回的是一个int类型的数据,这个数据代表的是影响数据库多少行;而查询则用executeQuery()方法,返回的是一个数据集。
3:把变量放在try catch 里面,默认为私有变量,外界不能访问。