import java.sql.Connection。
import java.sql.DriverManager
import java.sql.PreparedStatement
import java.sql.ResultSet
import java.sql.SQLException
import javax.naming.Context
import javax.naming.InitialContext
import javax.naming.NamingException
import javax.sql.DataSource
public class DBCon {
//数据库驱动对象
public static final String DRIVER="oracle.jdbc.driver.OracleDriver"
//数据库连接地址(数据库名)
public static final String URL="jdbc:oracle:thin:@localhost:1521:orcl"
//登陆名
public static final String USER="FM"
//登陆密码
public static final String PWD="FM"
//创建数据库连接对象
private Connection con=null
//创建数据库预编译对象
private PreparedStatement ps=null
//创建结果集
private ResultSet rs=null
//创建数据源对象
public static DataSource source=null
// //静态代码块
// static{
//
// //初始化配置文件context
// try {
// Context context=new InitialContext()
// source=(DataSource)context.lookup("java:comp/env/jdbc/webmessage")
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace()
// }
//
//
// }
/**
* 获取数据库连接
*/
public Connection getCon(){
try {
Class.forName(DRIVER)
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
try {
con=DriverManager.getConnection(URL,USER,PWD)
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return con
}
// /**
// * 获取数据库连接
// */
// public Connection getCon(){
//
// try {
// con=source.getConnection()
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace()
// }
//
// return con
// }
/**
* 关闭所有资源
*/
public void closeAll(){
if(rs!=null)
try {
rs.close()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
if(ps!=null)
try {
ps.close()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
if(con!=null)
try {
con.close()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
/**
* @param sql数据库更新(增、删、改) 语句
* @param pras参数列表(可传,可不传,不传为NULL,以数组形式存在)
* @return 返回受影响都行数
*/
public int update(String sql,String... pras){
int resu=0
con=getCon()
try {
ps=con.prepareStatement(sql)
for(int i=0i<pras.lengthi++){
ps.setString(i+1,pras[i])
}
resu=ps.executeUpdate()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
finally{
closeAll()
}
return resu
}
/**
* @param sql数据库查询语句
* @param pras参数列表(可传,可不传,不传为NULL,以数组形式存在)
* @return 返回结果集
*/
public ResultSet query(String sql,String... pras){
con=getCon()
try {
ps=con.prepareStatement(sql)
if(pras!=null)
for(int i=0i<pras.lengthi++){
ps.setString(i+1, pras[i])
}
rs=ps.executeQuery()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return rs
}
}
import java.sql.ResultSet//都是导入一些下面需要用到的类String ConnStr="jdbc:microsoft:sqlserver://WINJUE:1433DatabaseName=library"//jdbc连接数据库url
public sqlServer() {
try {
Class.forName(DBDriver).newInstance() //加载SQLServer驱动程序,DBDriver是你上面的代码
conn=DriverManager.getConnection(ConnStr,"sa","sa")//和数据库建立连接,ConnStr里面的://WINJUE:1433DatabaseName=library 分别是主机地址:端口号你自己建的数据库(database)
}
catch(SQLException e) { //捕获SQL异常
System.out.println(e.getMessage())//要是出现异常,捕获到后,这句代码会把异常的信息(出错的原因之类的)打印出来。
}
catch(Exception e) { //捕获异常,这个是总的,所以不能和上面的顺序颠倒,先小到大,我连ORACLE和MYSQL,这个我通常不要,只须捕获SQL异常就OL
System.out.println(e.getMessage())
}
}
public Connection getConn(){ //获取连接方法
return conn
}
public void insert(String sql) {//增删改
try {
Statement stm=conn.createStatement()调用conn下的方法,创建Statement对象
stm.executeUpdate(sql)//调用Statement下的方法执行SQL语句
System.out.println(" *** 作成功")
}
catch(Exception e){
System.out.println(e.getMessage())//如上
}
}
public ResultSet query(String sql){ //查询
try{
Statement stm=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)
rs=stm.executeQuery(sql)//如上
}
catch(Exception e){
System.out.println(e.getMessage())
}
return rs
}
public static void main(String args[]){
sqlServer conn=new sqlServer()//创建sqlServer,就是你上面的类,以便调用里面的方法
ResultSet rs=conn.query("select * from Orders")//调用query方法,执行SQL语句后,把结果保存到结果集里
//conn.insert("delete from BookInfo where BookName =" +"\'悟空传\'")
//conn.insert("insert into BookInfo (BookID,BookName,Author,KeyWord) values (14445678,'悟空传','今何在','孙悟空')")
try{
while(rs.next()){ //循环,判断结果集里的记录,一条条往下走,是否还有下一条记录,若是返回真,继续走
System.out.print(rs.getString("OrderID"))
//System.out.print(rs.getString("U_age"))
}
rs.close() //关闭结果集
}
catch (Exception e){
System.out.println(e.getMessage())
}
}
}
注:
TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至能进行特定定位,例如移至列表中的第四个记录或从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 相同,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。
两种方式:1、JDBC-ODBC连接,也叫桥连接。驱动字符串:sun.jdbc.odbc.JdbcOdbcDriver连接字符串:JDBC:ODBC:数据源名称 2、JDBC,也叫直连接需要驱动包,并且要将驱动包复制到:JDK安装路径\jre\lib\ext\下,或通过IDE将驱动包加载到程序的构建路径中。常用的数据库的连接方式:1)Microsoft SQLServer驱动字符串:com.microsoft.jdbc.sqlserver.SQLServerDriver连接字符串:JDBC:MICROSOFT:SQLSERVER://主机名:端口号databasename = 数据库名称2)ORACLE(a) thin连接 驱动字符串:oracle.jdbc.driver.OracleDriver 连接字符串:JDBC:ORACLE:thin:@主机名:端口号:数据库SID(b) oci8连接 驱动字符串: oracle.jdbc.driver.OracleDriver 连接字符串 :JDBC:ORACLE:oci8:@网络服务名3)My SQL 驱动字符串:com.mysql.jdbc.Driver 连接字符串:JDBC:MYSQL://主机名:端口号/数据库名?useUnicode=true&characterEncoding=utf-8欢迎分享,转载请注明来源:内存溢出
评论列表(0条)