如何使用JDBC连接oracle数据库

如何使用JDBC连接oracle数据库,第1张

1)首先要有java连接oracle数据库的驱动类,下载好后导入到工程里

2)代码:

import java.sql.*

public class JDBCTest {

/**

* @param args

* @throws ClassNotFoundException

*/

public static void main(String[] args)

throws ClassNotFoundException, SQLException{

//1.准备参数

String ip = "192.168.0.26"

String sid = "tarena"

String port = "1521"

String dbUser = "openlab"

String dbPassword = "open123"

String driver

= "oracle.jdbc.driver.OracleDriver"

//2.构造驱动实例

Class.forName(driver)

//3.创建连接

//连接字符串是固定的形式,oracle的形式:

String url

= "jdbc:oracle:thin:@"

+ ip + ":" + port + ":" + sid

Connection conn

= DriverManager.getConnection

(url, dbUser, dbPassword)

//4.执行SQL语句

String sql = "select id, password, name from user_sd1104 " +

"where id = 1001 and password = '1234'"

Statement stmt = conn.createStatement()

ResultSet rs

= stmt.executeQuery(sql)//执行sql语句

while(rs.next()){

int id = rs.getInt(1)

String pwd = rs.getString(2)

String name = rs.getString(3)

System.out.println("welcome," + name)

}

rs.close()

stmt.close()

conn.close()

}

}

文件用:ojdbc6.jar

/**

* 一个非常标准的连接Oracle数据库的示例代码

*/

public void testOracle()

{

    Connection con = null// 创建一个数据库连接

    PreparedStatement pre = null// 创建预编译语句对象,一般都是用这个而不用Statement

    ResultSet result = null// 创建一个结果集对象

    try

    {

        Class.forName("oracle.jdbc.driver.OracleDriver")// 加载Oracle驱动程序

        System.out.println("开始尝试连接数据库!")

        String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE"// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库的SID

        // 如果是服务名,则用String url = "jdbc:oracle:thin:@127.0.0.1:1521/ORCL

        String user = "system"// 用户名,系统默认的账户名

        String password = "147"// 你安装时选设置的密码

        con = DriverManager.getConnection(url, user, password)// 获取连接

        System.out.println("连接成功!")

        String sql = "select * from student where name=?"// 预编译语句,“?”代表参数

        pre = con.prepareStatement(sql)// 实例化预编译语句

        pre.setString(1, "刘显安")// 设置参数,前面的1表示参数的索引,而不是表中列名的索引

        result = pre.executeQuery()// 执行查询,注意括号中不需要再加参数

        while (result.next())

            // 当结果集不为空时

            System.out.println("学号:" + result.getInt("id") + "姓名:"

                    + result.getString("name"))

    }

    catch (Exception e)

    {

        e.printStackTrace()

    }

    finally

    {

        try

        {

            // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源

            // 注意关闭的顺序,最后使用的最先关闭

            if (result != null)

                result.close()

            if (pre != null)

                pre.close()

            if (con != null)

                con.close()

            System.out.println("数据库连接已关闭!")

        }

        catch (Exception e)

        {

            e.printStackTrace()

        }

    }

}

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/dms/console/DMSConsole

主要看这一行,NoClassDefFoundError

NoClassDefFoundError 这个错误出现时一般是这两种情况:

1. Windows 不区分文件名大小写,你把文件名搞错了,它和 public class 名字有着大小写的不同。

2. 一个类在 static { } 这个初始化代码块或 static Clz instance= new Clz()时 new Clz() 抛出了异常。这样一个 class 在第一次加载后会自动执行 class 级别的初始化代码,比如静态变量和 static { } 中的代码,这个时候如果有一个异常未处理就导致 class 初始化失败,这个 class 确实存在,加载成功了,但加载后 define 这个 class 时出错了。所以错误的名字叫 NoClassDefFoundError 而不是 ClassNotFound,它确实 found 了,但 define 失败。

从你的案例来看,肯定不是第1种情况。

因此你需要做的事情时,从日志中找出来到底什么原因导致 Hibernate 初始化的时候出错了。你的代码有没有可能把某个 Hibernate 初始化的代码直接 try { ... } catch (Exception e) { /* 新手经常在此处什么也不做,连日志都不打印一个 */} ,如果有新手写出这样的代码你是没办法猜出原因的,你唯一的办法只有人工检查代码,一行一行地看。


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

原文地址:https://54852.com/sjk/9930361.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存