文件用: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()
}
}
}
S1、下载ojdbc14.jar驱动文件,并将该文件放到你的项目中去;
S2、在MyEclipse中的项目中添加Oracle驱动程序:在项目名上右键-> Build Path ->Add External Archiver然后选择你刚才放在项目中的文件, 点确定即可。
S3、打开Oracle的各项服务,并在Oracle中建一张表。
S4、编写MyEclipse与Oracle的连接程序:
[cpp] view plaincopyprint?<SPAN style="FONT-SIZE: 16px">import java.sql.Connection
import java.sql.DriverManager
import java.sql.PreparedStatement
import java.sql.ResultSet
import java.sql.Statement
import java.sql.*
public class JDBC_Test {
//orcl为oracle数据库中的数据库名,localhost表示连接本机的oracle数据库
//1521为连接的端口号
private static String url="jdbc:oracle:thin:@localhost:1521:orcl"
//system为登陆oracle数据库的用户名
private static String user="system"
//manager为用户名system的密码
private static String password="manager"
public static Connection conn
public static PreparedStatement ps
public static ResultSet rs
public static Statement st
//连接数据库的方法
public void getConnection(){
try {
//初始化驱动包
Class.forName("oracle.jdbc.driver.OracleDriver")
//根据数据库连接字符,名称,密码给conn赋值
conn=DriverManager.getConnection(url, user, password)
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace()
}
}
//测试能否与oracle数据库连接成功
public static void main(String[] args) {
JDBC_Test basedao=new JDBC_Test()
basedao.getConnection()
if(conn==null){
System.out.println("与oracle数据库连接失败!")
}else{
System.out.println("与oracle数据库连接成功!")
}
}
}
</SPAN>
import java.sql.Connection
import java.sql.DriverManager
import java.sql.PreparedStatement
import java.sql.ResultSet
import java.sql.Statement
import java.sql.*
public class JDBC_Test {
//orcl为oracle数据库中的数据库名,localhost表示连接本机的oracle数据库
//1521为连接的端口号
private static String url="jdbc:oracle:thin:@localhost:1521:orcl"
//system为登陆oracle数据库的用户名
private static String user="system"
//manager为用户名system的密码
private static String password="manager"
public static Connection conn
public static PreparedStatement ps
public static ResultSet rs
public static Statement st
//连接数据库的方法
public void getConnection(){
try {
//初始化驱动包
Class.forName("oracle.jdbc.driver.OracleDriver")
//根据数据库连接字符,名称,密码给conn赋值
conn=DriverManager.getConnection(url, user, password)
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace()
}
}
//测试能否与oracle数据库连接成功
public static void main(String[] args) {
JDBC_Test basedao=new JDBC_Test()
basedao.getConnection()
if(conn==null){
System.out.println("与oracle数据库连接失败!")
}else{
System.out.println("与oracle数据库连接成功!")
}
}
}
S5、如果上述的连接已经建立,就可以利用JDBC中的Java API对数据库进行 *** 作了,具体的查询,插入,删除,更新 *** 作如下:
[cpp] view plaincopyprint?<SPAN style="FONT-SIZE: 16px">代码转载自:http://blog.csdn.net/cxwen78/article/details/6863696
import java.sql.Connection
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.SQLException
import java.sql.Statement
public class JDBC_Test {
// 创建静态全局变量
static Connection conn
static Statement st
public static void main(String[] args) {
insert() //插入添加记录
update() //更新记录数据
delete() //删除记录
query() //查询记录并显示
}
/* 插入数据记录,并输出插入的数据记录数*/
public static void insert() {
conn = getConnection() // 首先要获取连接,即连接到数据库
try {
String sql = "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)"
+ " VALUES ('Tom1', 32, 'M', 'china','Personnel','3','3000')" // 插入数据的sql语句
st = (Statement) conn.createStatement() // 创建用于执行静态sql语句的Statement对象
int count = st.executeUpdate(sql) // 执行插入 *** 作的sql语句,并返回插入数据的个数
System.out.println("向staff表中插入 " + count + " 条数据") //输出插入 *** 作的处理结果
conn.close() //关闭数据库连接
} catch (SQLException e) {
System.out.println("插入数据失败" + e.getMessage())
}
}
/* 更新符合要求的记录,并返回更新的记录数目*/
public static void update() {
conn = getConnection() //同样先要获取连接,即连接到数据库
try {
String sql = "update staff set wage='2200' where name = 'lucy'"// 更新数据的sql语句
st = (Statement) conn.createStatement() //创建用于执行静态sql语句的Statement对象,st属局部变量
int count = st.executeUpdate(sql)// 执行更新 *** 作的sql语句,返回更新数据的个数
System.out.println("staff表中更新 " + count + " 条数据") //输出更新 *** 作的处理结果
conn.close() //关闭数据库连接
} catch (SQLException e) {
System.out.println("更新数据失败")
}
}
/* 查询数据库,输出符合要求的记录的情况*/
public static void query() {
conn = getConnection() //同样先要获取连接,即连接到数据库
try {
String sql = "select * from staff" // 查询数据的sql语句
st = (Statement) conn.createStatement() //创建用于执行静态sql语句的Statement对象,st属局部变量
ResultSet rs = st.executeQuery(sql) //执行sql查询语句,返回查询数据的结果集
System.out.println("最后的查询结果为:")
while (rs.next()) { // 判断是否还有下一个数据
// 根据字段名获取相应的值
String name = rs.getString("name")
int age = rs.getInt("age")
String sex = rs.getString("sex")
String address = rs.getString("address")
String depart = rs.getString("depart")
String worklen = rs.getString("worklen")
String wage = rs.getString("wage")
//输出查到的记录的各个字段的值
System.out.println(name + " " + age + " " + sex + " " + address
+ " " + depart + " " + worklen + " " + wage)
}
conn.close() //关闭数据库连接
} catch (SQLException e) {
System.out.println("查询数据失败")
}
}
/* 删除符合要求的记录,输出情况*/
public static void delete() {
conn = getConnection() //同样先要获取连接,即连接到数据库
try {
String sql = "delete from staff where name = 'lili'"// 删除数据的sql语句
st = (Statement) conn.createStatement() //创建用于执行静态sql语句的Statement对象,st属局部变量
int count = st.executeUpdate(sql)// 执行sql删除语句,返回删除数据的数量
System.out.println("staff表中删除 " + count + " 条数据\n") //输出删除 *** 作的处理结果
conn.close() //关闭数据库连接
} catch (SQLException e) {
System.out.println("删除数据失败")
}
}
/* 获取数据库连接的函数*/
public static Connection getConnection() {
Connection con = null //创建用于连接数据库的Connection对象
try {
Class.forName("com.mysql.jdbc.Driver")// 加载Mysql数据驱动
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myuser", "root", "root")// 创建数据连接
} catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage())
}
return con //返回所建立的数据库连接
}
}
</SPAN>
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) { /* 新手经常在此处什么也不做,连日志都不打印一个 */} ,如果有新手写出这样的代码你是没办法猜出原因的,你唯一的办法只有人工检查代码,一行一行地看。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)