JDBC的详细说明与简单应用举例


第一部分: JDBC创建使用的详细步骤

一、与数据库建立连接

要想和数据库建立连接,首先要导入必要的package:

CODE:
<%@ page import="java.sql.*"%>
通过jdbc-odbc桥连接SQL Server数据库:

CODE:
//加载jdbc-odbc驱动程序
class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//通过数据源连接:
String url ="jdbc:odbc:YourDSN";
String login = "sa";
String password ="";
Connection conn = DriverManager.getConnection(url,login,password);
//通过机器名或IP连接:
String url = "jdbc:odbc:Driver={SQL Server};Server=imagebear;uid=sa;pwd=;Database=jspdb";
//如果用IP只需将imagebear改为192.168.0.36即可
Connection conn = DriverManager.getConnection(url);
//如果url中不包含uid和pwd,也可写成:
Connection conn = DriverManager.getConnection(url,"sa","");
//如果是Access数据库只需将url改为:
String url = "jdbc:odbc:Driver={Microsoft Access Driver(*.mdb)};DBQ=c:/data/test.mdb";
二、检索结果集
与数据库建立连接以后,就可以查询数据库中的内容了

CODE:
//创建声明:
Statement stmt = conn.createStatement();
//创建结果集对象:
ResultSet rs = stmt.executeQuery("SELECT * FROM tbl_test");
//列出表中的内容:
While(rs.next())
{
    out.println(rs.getString(1)+ "&nbsp;&nbsp;&nbsp;&nbsp; "+rs.getString(2)+ "<br><br>");
}
//关闭ResultSet对象:
rs.close();
rs = null;
//关闭Statement对象:
stmt.close();
stmt = null;
下面这段代码列出了表tbl_test中两列的内容(测试通过):

CODE:
<%@ page import="java.sql.*"%> 
<% 
try 

//下面的代码为加载JDBD-ODBC驱动程序 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

//建立连接 
//String url="jdbc:odbc:test"; 
String url = "jdbc:odbc:Driver={SQL Server};Server=imagebear;uid=sa;pwd=;Database=jspdb";
//"test"是系统dsn名 

Connection con=DriverManager.getConnection(url); 

//然后创建一个JDBC声明 
Statement stmt = con.createStatement(); 

//创建结果集
ResultSet rs = stmt.executeQuery("Select * from tbl_test");
//ResultSet rs = stmt.executeQuery("Insert into tbl_test Values(6, tangmaojian )");

while(rs.next())
{
    out.println(rs.getString(1)+"&nbsp;&nbsp;&nbsp;&nbsp;"+rs.getString(2)+"<br><br>");
}

//关闭ResultSet实例;
rs.close();
rs = null;
//关闭Statement实例;
stmt.close();
stmt = null;
三、更新数据库
对数据库进行更新操作包括修改、插入和删除记录、创建和删除表、以及增加和删除某列。对数据库更新操作也是在一个Statement对象上完成的,使用的是executeUpdate方法。(实验表明,executeQuery方法也可以用DELETE、,INSERT、UPDATE方法影响数据库,但它不返回结果集。为避免混乱,推荐使用executeUpdate方法。)
1、对表中记录的操作
同SELECT操作类似,executeUpdate方法的参数是一个String对象,即要执行的SQL语句。它返回的不是ResultSet对象,而是一个整数。对于UPDATE、INSERT和DELETE操作,这个整数是操作所影响的记录的行数。对于其它不返回值的SQL语句,executeUpdate方法的返回值为零。
下面这段代码对tbl_test表进行更新操作,并显示操作前和操作后的结果(测试通过):

CODE:
<%@ page import="java.sql.*"%> 
<%
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={SQL Server};Server=192.168.0.36;uid=sa;pwd=;Database=jspdb";
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("Select * from tbl_test");
//显示更新操作前的tbl_test表
out.println("Result Before execute Update:<br>");
while(rs.next()){
    out.println(rs.getString(1)+"&nbsp;&nbsp;&nbsp;&nbsp;"+rs.getString(2)+"<br><br>");
}
//执行数据库更新操作:
stmt.executeUpdate("UPDATE tbl_test SET name= ying WHERE id=1");
stmt.executeUpdate("DELETE FROM tbl_test WHERE id=5");
stmt.executeUpdate("INSERT INTO tbl_test(id,name) VALUES(7, xpg )");
//显示更新后的tbl_test表
rs = stmt.executeQuery("SELECT * FROM tbl_test");
out.println("Result After execute Update:<br>");
while(rs.next()){
    out.println(rs.getString(1)+"&nbsp;&nbsp;&nbsp;&nbsp;"+rs.getString(2)+"<br><br>");
}
//关闭对象
rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
}
%>
2、创建和删除表

CODE:
//创建一个表tbl_new,它有两列,列ID为Int,列Name为Varchar:
stmt.executeUpdate("CREATE TABLE tbl_new(ID INTEGER,Name VARCHAR(20))");
//删除表tbl_new:
stmt.executeUpdate("DROP TABLE tbl_new");
3、增加和删除表中的列
对一个表的列进行更新操作是使用SQL的ALTER TABLE语句。对列进行的更新操作将影响到列中的所有行。

CODE:
//在表tbl_new中增加一列tel,数据类型为字符串:
stmt.executeUpdate("ALTER TABLE tbl_new ADD COLUMN tel Varchar(50)");
//删除表中的一列:
stmt.executeUpdate(ALTER TABLE tbl_new DROP COLUMN tel);
第二部分: JDBC的举例说明

前提:数据库:MYSQL5.0----DATABASE:jdbc----TABLE:google

1.创建数据库(jdbc): CREATE DATABASE jdbc;

2.创建数据库表(google):CREATE TABLE google

(

    id int(11) not null auto_increment,

    content varchar(50) NOT NULL,

    time varchar(10) DEFAULT NULL,

   PRIMARY KEY (id)

);

3.插入数据: INSERT INTO google(content, time) VALUES('Struts2', '2010-01-28');

                      INSERT INTO google(content, time) VALUES('Struts2 入门', '2010-01-28');

                       ......

4.建立Java工程(工程名:JDBC)首先导入MYSQL驱动jar包:

编写Base.java程序(一个JDBC入门实例)

代码如下:

public class Base

{

    public static void main(args [])

    {

         //①:注册驱动

        DriverManager.registerDriver(new Driver());

        //②:建立连接

       Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root","root");

        //③:创建语句

        Statement st = conn.createStatement();

         //④:处理语句

         ResultSet rs = st.executeQuery("SELECT * FROM google");

        //⑤:处理结果

       while(rs.next)

        {

              System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" + rs.getObject(3));

        }

        //⑥ :释放资源

        rs.close();

        st.close();

        conn.close();

   }

}

注意:("jdbc:mysql://localhost:3306/jdbc", "root","root")分别为mysql数据库的 url、username 、password;

getObject(1): 表示取结果集中行的第一列,因为Java中一切皆对象,故用getObject(num)都可取到。

 

第三: 举例2


import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;




public class JDBCTest {
public static void main(String[] args){
   Connection con = null;
   Statement stmt = null;
   ResultSet rs = null;
  //定义连接字符串。
   String url = "jdbc:oracle:thin:@127.0.0.1:1521:";
   String userName = "hr";
   String password = "hr";
  
   try {
    //加载驱动oracle.jdbc.driver.OracleDriver(加看做“贾”)
    String driver = "oracle.jdbc.driver.OracleDriver";
    Class.forName(driver);
    //建立连接(连看作“琏”)
    con = DriverManager.getConnection(url,userName,password);
    //创建Statement对象,准备执行(欲)
    stmt = con.createStatement();
    //删除表,
    String sql = "drop table t_emp";
    try {


    //执行sql语句(执政)
     stmt.executeUpdate(sql);
    } catch (Exception e) {
     System.out.println("表不存在");
    }
    //创建表
    sql = "create table t_emp(id number(3) primary key,name varchar2(34))";
    stmt.executeUpdate(sql);
    //插入记录
    sql = "insert into t_emp values(001,'杨扬')";
    stmt.execute(sql);
   
    //查询记录
    sql = "select * from t_emp";
    rs = stmt.executeQuery(sql);
   
   //遍历结果集
    StringBuffer sb = new StringBuffer();
    while(rs.next()){
     sb.append("id="+rs.getInt(1)+"\t");
     sb.append("name="+rs.getString(2)+"\n");
    }
    System.out.println(sb.toString());
   } catch (Exception e) {
    e.printStackTrace();
   } finally{
   //释放数据库资源,而不是内存资源
    //释放对象
    if(rs!=null)
     try {
     rs.close();
     } catch (SQLException e) {
      e.printStackTrace();
     }
    if(stmt!=null)
     try {
     stmt.close();
     } catch (SQLException e) {
      e.printStackTrace();
     }
    //释放连接
    if(con!=null)
     try {
     con.close();
     } catch (SQLException e) {
      e.printStackTrace();
      }
   }
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值