java如何实现sql连接和查询的代码?

java如何实现sql连接和查询的代码?,第1张

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12047619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存