JDBC与数据库,简单总结一下。

一:连接数据库的方式:


建立JDBC-ODBC桥接器和加载纯Java数据驱动程序:本文主要介绍的是前者,优点ODBC提供了数据库访问的通用平台使得JDBC能够访问几乎所有数据库,缺点是移植性差。


二:JDBC-ODBC桥接器连接方式:


 使用 建立连接器   连接 或
应用程序————>JDBC————>ODBC————>|———>Oracle
                                                                                    |———>MySql


三:使用JDBC-ODBC桥接器连接数据库的步骤:
(1)建立JDBC-ODBC桥接器:
JDBC使用Java.long包中的Class类建立JDBC-ODBC桥接器。Class类通过调用他的静态方法forName加载sun.jdbc.odbc包中的JdbcOdbcDriver类建立JDBC-ODBC桥接器。
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

catch(ClassNotFountException e){
System.out.println(e);

(2) 创建ODBC数据源
(3)和ODBC数据源建立连接
Connection conn= DriverManager.getConnection(url,user,password);


下面是连接不同数据库的方式:
1、Oracle8/8i/9i数据库(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);


2、DB2数据库
Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);


3、Sql Server7.0/2000数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb为数据库
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);


4、Sybase数据库
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/myDB";
//myDB为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);


5、Informix数据库
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
//myDB为数据库名
Connection conn= DriverManager.getConnection(url);


6、MySQL数据库
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB为数据库名
Connection conn= DriverManager.getConnection(url);


7、PostgreSQL数据库
Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/myDB"
//myDB为数据库名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);
 
8、JDBC-ODBC桥
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:jsp");
jsp为建立的odbc数据源名,事先要先将SQL server的表设置为数据源。在“管理工具”-“数据源odbc”里用系统DNS添加。






8.Oracle8/8i/9i数据库(thin模式) 
//import java.sql.*; 
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID 
String user="test"; 
String password="test"; 
Connection conn= DriverManager.getConnection(url,user,password);  
Statement stmtNew=conn.createStatement(); 


9.DB2数据库 
//import java.sql.*; 
Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); 
String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 
String user="admin"; 
String password=""; 
Connection conn= DriverManager.getConnection(url,user,password);  
Statement stmtNew=conn.createStatement(); 


10.Sql Server7.0/2000数据库 
//import java.sql.*; 
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 
//String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db2"; //7.0、2000 
String url="jdbc:sqlserver://localhost:1433;DatabaseName=db2"; //2005 
//db2为数据库名 
String user="sa"; 
String password=""; 
Connection conn= DriverManager.getConnection(url,user,password);  
Statement stmtNew=conn.createStatement(); 


11.Sybase数据库 
//import java.sql.*; 
Class.forName("com.sybase.jdbc.SybDriver").newInstance(); 
String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名 
Properties sysProps = System.getProperties(); 
SysProps.put("user","userid"); 
SysProps.put("password","user_password"); 
Connection conn= DriverManager.getConnection(url, SysProps);  
Statement stmtNew=conn.createStatement(); 


12.Informix数据库 
//import java.sql.*; 
Class.forName("com.informix.jdbc.IfxDriver").newInstance(); 
String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; 
user=testuser;password=testpassword"; //myDB为数据库名 
Connection conn= DriverManager.getConnection(url);  
Statement stmtNew=conn.createStatement(); 


13.MySQL数据库 
//import java.sql.*; 
//Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
Class.forName("com.mysql.jdbc.Driver"); 
//String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; 
String url ="jdbc:mysql://localhost:3306/myDB"; 


//myDB为数据库名 
Connection conn= DriverManager.getConnection(url,"root","root");  
Statement stmtNew=conn.createStatement(); 


14.PostgreSQL数据库 
//import java.sql.*; 
Class.forName("org.postgresql.Driver").newInstance(); 
String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库名 
String user="myuser"; 
String password="mypassword"; 
Connection conn= DriverManager.getConnection(url,user,password); 
Statement stmtNew=conn.createStatement(); 


15.access数据库直连用ODBC的 
//import java.sql.*; 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ; 
String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb"); 
Connection conn = DriverManager.getConnection(url,"sa",""); 
Statement stmtNew=conn.createStatement(); 


16.连接Excel文件 
//import java.sql.*; 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
String url = "jdbc:odbc:driver={Microsoft Excel Driver (*.xls)};DBQ=D:\\myDB.xls"; // 不设置数据源 
String user="myuser"; 
String password="mypassword"; 
Connection conn= DriverManager.getConnection(url,user,password); 
Statement stmtNew=conn.createStatement();
四:通过SQL语句对数据库进行操作:增,删,改,查。
1.查:(以查为例)
(1)首先使用Statement 声明一个SQL语句对象,然后用cnn调用createStatement()创建这个SQL语句对象。
  Statement sql=con.createStatement();
(2)有了SQL对象以后,这个对象可以调用相应的方法实现对数据库中的表的查询和修改,并将结果放在一个ResultSet对象中。ResultSet对象是以统一形式的“列”组织的数据行组成。一列一列的
ResultSet rs=sql.executeQuery("SELECT * FROM good");
ResultSet对象一次只能看到一个数据行,使用next()方法走到下一行,走到下一行后
ResultSet对象对象可以用getXXX(int columnIndex)函数获得这个字段值也可以用getString()统一来获取以String来保存。(第一行是1,如:
getXXX(1)返回第一列的值)但要注意,columnIndex的值不能颠倒得是1,2,3不能1,3,2
*当然在查询之前要要先了解表中有多字段,叫什么名字:
DatabaseMetaData metadata=conn.getMetaData();
ReaultSet tableMessage=metadata.getColumns(null,null,good,null);
有几个字段就有几行。
tableMessage。next()游标移动到下一行。开始为1之前。
tableMessage
。getXXX(4);得到字段名
(3)控制游标
A。resultset对象的next方法只能顺序向下,
B。如果要上下移动,显示结果集的某条记录,或某几条。这是要返回一个滚动的结果集。得到滚动的结果集的方法:
  Statement stmt=con.createStatement(int type,int concurrency);//这两个参数取值决定滚动形式
ResultSet sr=stmt.executeQuery(SQL语句);
type    ResultSet.TYPE_FORWORD_ONLY   只能向下
  ResultSet.TYPE_SCROLL_INSENSITIVE  能上下,当数据库变化时数据集不变, 
  ResultSet.TYPE_SCROLL_INSENSITIVE  能上下,当数据库变化时数据集同步,
concurrency:
ResultSet.CONCUR_READ_ONLY   不能用结果集更新数据库
ResultSet.CONCUR_UPDATABLE               能用结果集更新数据库
2更新,添加,删除操作
public int executeUpdate(String sqlStatement);
通过sqlStatement参数指定的SQL语句完成操作。
UPDATA <表名> SET <字段名>  =  新值 WHERE <条件子句>
INSERT into 表(字段列表) VALUES (对应的具体的记录) 或 INSERT INTO 表(VALUES(对应的具体记录))
DELETE FROM <表名>  WHERE  <条件子句>
需要注意的是查询语句返回结果集后如果还有其他SQL语句需要执行,那么就要等到执行万后面的语句后才能使用结果集的数据,如果数据库里的数据改变则要重新得到结果集。
3使用预处理语句
目的:提高效率。
数据库中的SQL解释器需要先把SQL语句生成底层的内部命令,然后在执行相关操作,那我们可以先进性预编译处理生成底层的内部命令然后发送非服务器进行执行
PrepareStatement  sql=conn.prepareStatement(String SQL);//预编译
rs=sql.executeQuery();
4事物:
一组SQL语句组成,要么都执行,要么一个也不执行。从而保证完整性和一致性。
和数据库建立连接后,conn是自动提交SQL语句的,为此我们要conn.setAutoCommit(boolean autoCommit)autoCommit参数为false。
之后
PrepareStatement  sql=conn.prepareStatement(String SQL);//预编译
rs=sql.executeQuery();
.
.


执行多个语句
conn.commit();//  全部提交
如果出现异常调用conn.rollback();来撤销所有的语句。
5批处理
sql.addBatch(sql1);
sql.addBatch(sql2);
6.CachedRowSetlmpl类
我们知道每个数据库同一时刻连接的最大线程是规定的,而要操作数据库就必须保持程序与数据库的连接。
Java中CachedRowSetlmpl类实现 了CachedRowSet接口。CachedRowSetlmpl对象可以保存ResulSet对象中的数据
而且CachedRowSetlmpl对象不依赖Connnection对象,一旦ResulSet对象中的数据保存到CachedRowSetlmpl对象,就可以关闭和数据库的连接。CachedRowSetlmpl继承了ResulSet的所有方法,说以可以和ResulSet的对象一样操作数据。
CachedRowSetlmpl 的对象rowset调用rs
rowset.populate(rs);
说了这么多来总结下步骤:
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

catch(ClassNotFountException e){
System.out.println(e);

Connection conn=DriverManager.getConnection(url,user,password);
conn.setAutoCommit(false);
statement sql=conn.createStatement();
//PrepareStatement  sql1=conn.prepareStatement(String SQL1);
//PrepareStatement  sql2=conn.prepareStatement(String SQL2);
sql.addBatch(sql1);//更改
sql.addBatch(sql2);//更改
int [] number=sql.executeBatch();
conn.commit();
conn.rollback();
//ResultSet rs=sql.executeQuery("SELECT * FROM good");


//rowset.populate(rs);






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值