oracle 数据库连接问题 跟踪一下阿Connection conn = DriverManager.getConnection(url, user, password);出异常了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果不出异常,可以System.out.pritnln(conn),看看到底连没连上,连上是一个对象,没连上是null 确实怪,还是debug一下看看。 连接上了 但是很慢 查询的时候报 java.sql.SQLException: ORA-00600: 内部错误代码,参数: [ttcgcshnd-1], [0], [], [], [], [], [], [] 这个错 代码::import java.sql.Connection;import java.sql.SQLException;import java.sql.PreparedStatement;import java.sql.CallableStatement;import java.sql.Statement;import java.sql.ResultSet;import java.sql.DriverManager;import javax.sql.*;import java.util.*;import java.io.*;/** * 数据库管理模块 * 封装对数据库的基本操作 * 包括数据库的连接、断开、提交、回滚和生成宏语句 */public class DatabaseManager { private java.sql.Connection connection; //连接 /** * 构造函数 */ public DatabaseManager() { connectDatabase(); //本来默认就是true try { connection.setAutoCommit(true); } catch (SQLException sqlEx) { sqlEx.printStackTrace(); } } /** * 连接数据库 */ private void connectDatabase() { try { try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); } catch (ClassNotFoundException ex2) { } catch (IllegalAccessException ex2) { } catch (InstantiationException ex2) { } String url = "jdbc:oracle:thin:@192.168.1.250:1521:SMS"; String user = "warehouse"; String password = "warehouse"; connection = DriverManager.getConnection(url, user, password); System.out.println(connection); if (connection == null) { System.out.println("数据库连接错误!连接未成功!"); } } catch (java.sql.SQLException ex) { ex.printStackTrace(); } } public CallableStatement callableStatement(String sql) { CallableStatement callableStatement = null; try { callableStatement = connection.prepareCall(sql); } catch (SQLException e) { e.printStackTrace(); } return callableStatement; } public PreparedStatement prepareStatement(String sql) { PreparedStatement preparedStatement = null; try { preparedStatement = connection.prepareStatement(sql); } catch (SQLException sqlEx) { sqlEx.printStackTrace(); } return preparedStatement; } public Statement statement() { Statement statement = null; try { statement = connection.createStatement(); } catch (SQLException e) { e.printStackTrace(); } return statement; } /** * 事务提交 */ public void conmit() { try { connection.commit(); } catch (java.sql.SQLException e) { e.printStackTrace(); } } /** * 事务回滚 */ public void rollback() { try { connection.rollback(); } catch (java.sql.SQLException e) { e.printStackTrace(); } } /** * 关闭数据库 * 此方法保持为 public * 目的是为了在使用DatabaseManager这个类时,可以显式地关闭数据库连接 */ public void closeConnection() { try { //判断如果数据库连接没有关的情况下 //就关闭之 if (!connection.isClosed()) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } /** * 在用户没有关闭数据库的前提下 * 通过析构函数,关闭连接 * 从而保护有限的数据库连接资源 */ protected void finalize() { closeConnection(); } //测试用例 public static void main(String[] args) throws SQLException { DatabaseManager databaseManager = new DatabaseManager(); System.out.println("完成连接"); PreparedStatement testSql = databaseManager.prepareStatement( "SELECT * FROM t_t_examplemsg WHERE cstatus=?"); testSql.setInt(1,1); ResultSet resultSet=testSql.executeQuery(); while(resultSet.next()){ System.out.println(resultSet.getInt("cstatus")); } testSql.close(); databaseManager.closeConnection(); }}运行后打印的:oracle.jdbc.driver.OracleConnection@6e3d60完成连接java.sql.SQLException: ORA-00600: 内部错误代码,参数: [ttcgcshnd-1], [0], [], [], [], [], [], [] at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405) at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:889) at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:1826) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2015) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:395) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:339) at com.sms.database.DatabaseManager.main(DatabaseManager.java:173)Exception in thread "main" 数据库连接应该没问题是不是你 String user = "warehouse";String password = "warehouse";没有访问t_t_examplemsg表的权限或是cstatus字段不是number型的可以把你的sql放在sql/plus里运行一下,看看是否出错 我用的是String user = "warehouse";String password = "warehouse";登陆的sql/plus 在里面运行sql语句没错啊 用sql/plus看看能不能连上数据库,如果不行,可能是你的配置文件没有配置。至少要装上客户端程序,打开oracle安装目录\ora92\network\admin\tnsnames.ora 添加到你的数据库的连接。 现在登陆和连接都没有问题 就是在执行sql语句的时候报 java.sql.SQLException: ORA-00600: 内部错误代码,参数: [ttcgcshnd-1], [0], [], [], [], [], [], [] 这个错 看提示应该是oracle驱动程序和oracle版本不一致的原因,9i的话用classes12.zip ,如果是8i,最好用ojdbc14.jar 我是 oracle9i 驱动是classes12.jar啊 可以法一个9i的驱动给我吗 [email protected] 搞定了 是根据不同的jdk 使用不同的驱动 jdk1.4使用ojdbc14.jar jdk1.3使用classes12.zip结分 ajaxfileupload上传问题 为什么我从一个servlet跳转到一个jsp页面的时候会自动去执行那个页面的javascript函数的啊???求高人解答 java导出EXCEL用POI 怎么让用户选择保存路径 JSP页面中域名的检查怎么实现? Struts 2 文件加密上传 如能解决了 送全部分数 jsp出现乱码 求助!紧急求助!!!! fdsafsa 分页显示问题,求教! 关于jsp页面防止刷新的问题。! 一个JAVABEAN程序,我想通过JSP,在HTML页面上输出BEAN里变量answer的值。感谢! 在SQL语句如何把几个别名相加,谢谢
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.CallableStatement;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import javax.sql.*;
import java.util.*;import java.io.*;/**
* 数据库管理模块
* 封装对数据库的基本操作
* 包括数据库的连接、断开、提交、回滚和生成宏语句
*/
public class DatabaseManager {
private java.sql.Connection connection; //连接 /**
* 构造函数
*/
public DatabaseManager() {
connectDatabase();
//本来默认就是true
try {
connection.setAutoCommit(true);
}
catch (SQLException sqlEx) {
sqlEx.printStackTrace();
}
} /**
* 连接数据库
*/
private void connectDatabase() {
try {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch (ClassNotFoundException ex2) {
}
catch (IllegalAccessException ex2) {
}
catch (InstantiationException ex2) {
}
String url = "jdbc:oracle:thin:@192.168.1.250:1521:SMS";
String user = "warehouse";
String password = "warehouse";
connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);
if (connection == null) {
System.out.println("数据库连接错误!连接未成功!");
}
}
catch (java.sql.SQLException ex) {
ex.printStackTrace();
}
} public CallableStatement callableStatement(String sql) {
CallableStatement callableStatement = null;
try {
callableStatement = connection.prepareCall(sql);
}
catch (SQLException e) {
e.printStackTrace();
}
return callableStatement;
} public PreparedStatement prepareStatement(String sql) {
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql);
}
catch (SQLException sqlEx) {
sqlEx.printStackTrace();
} return preparedStatement;
} public Statement statement() {
Statement statement = null;
try {
statement = connection.createStatement();
}
catch (SQLException e) {
e.printStackTrace();
}
return statement;
} /**
* 事务提交
*/
public void conmit() {
try {
connection.commit();
}
catch (java.sql.SQLException e) {
e.printStackTrace();
}
} /**
* 事务回滚
*/
public void rollback() {
try {
connection.rollback();
}
catch (java.sql.SQLException e) {
e.printStackTrace();
}
} /**
* 关闭数据库
* 此方法保持为 public
* 目的是为了在使用DatabaseManager这个类时,可以显式地关闭数据库连接
*/
public void closeConnection() {
try {
//判断如果数据库连接没有关的情况下
//就关闭之
if (!connection.isClosed()) {
connection.close();
}
}
catch (SQLException e) {
e.printStackTrace();
}
} /**
* 在用户没有关闭数据库的前提下
* 通过析构函数,关闭连接
* 从而保护有限的数据库连接资源
*/
protected void finalize() {
closeConnection();
} //测试用例
public static void main(String[] args) throws SQLException {
DatabaseManager databaseManager = new DatabaseManager();
System.out.println("完成连接");
PreparedStatement testSql = databaseManager.prepareStatement(
"SELECT * FROM t_t_examplemsg WHERE cstatus=?");
testSql.setInt(1,1);
ResultSet resultSet=testSql.executeQuery();
while(resultSet.next()){
System.out.println(resultSet.getInt("cstatus"));
}
testSql.close();
databaseManager.closeConnection();
}
}
运行后打印的:
oracle.jdbc.driver.OracleConnection@6e3d60
完成连接
java.sql.SQLException: ORA-00600: 内部错误代码,参数: [ttcgcshnd-1], [0], [], [], [], [], [], []
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:889)
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:1826)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2015)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:395)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:339)
at com.sms.database.DatabaseManager.main(DatabaseManager.java:173)
Exception in thread "main"
是不是你
String user = "warehouse";
String password = "warehouse";
没有访问t_t_examplemsg表的权限
或是cstatus字段不是number型的可以把你的sql放在sql/plus里运行一下,看看是否出错
String password = "warehouse";登陆的sql/plus 在里面运行sql语句没错啊
结分