第一部分: JDBC创建使用的详细步骤
一、与数据库建立连接
要想和数据库建立连接,首先要导入必要的package: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";
与数据库建立连接以后,就可以查询数据库中的内容了
Statement stmt = conn.createStatement();
//创建结果集对象:
ResultSet rs = stmt.executeQuery("SELECT * FROM tbl_test");
//列出表中的内容:
While(rs.next())
{
out.println(rs.getString(1)+ " "+rs.getString(2)+ "<br><br>");
}
//关闭ResultSet对象:
rs.close();
rs = null;
//关闭Statement对象:
stmt.close();
stmt = null;
<%
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)+" "+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表进行更新操作,并显示操作前和操作后的结果(测试通过):
<%
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)+" "+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)+" "+rs.getString(2)+"<br><br>");
}
//关闭对象
rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
}
%>
stmt.executeUpdate("CREATE TABLE tbl_new(ID INTEGER,Name VARCHAR(20))");
//删除表tbl_new:
stmt.executeUpdate("DROP TABLE tbl_new");
对一个表的列进行更新操作是使用SQL的ALTER TABLE语句。对列进行的更新操作将影响到列中的所有行。
stmt.executeUpdate("ALTER TABLE tbl_new ADD COLUMN tel Varchar(50)");
//删除表中的一列:
stmt.executeUpdate(ALTER TABLE tbl_new DROP COLUMN tel);
前提:数据库: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();
}
}
}
}