我的java和oracle连接出了问题,帮忙看一下。代码是:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的java和oracle连接出了问题,帮忙看一下。代码是:相关的知识,希望对你有一定的参考价值。

import java.sql.*;
public class TextJdbc
public static void main(String[] args) throws Exception
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:CLRExtProc","scott","tiger");


错误信息是:Exception in thread "main" java.sql.SQLRecoverableException: 无法从套接字读取更多的数据
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1200)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1155)
at oracle.jdbc.driver.T4C8TTIpro.receive(T4C8TTIpro.java:128)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1064)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at TextJdbc.main(TextJdbc.java:5)
用的驱动是oracle 11g 自带的,帮帮忙。

没看出来错误,把我写的代码附上,希望能对你有点帮助吧

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnection
/*
* 功能:编写一个静态方法用于与数据库建立连接
* 输入参数:无
* 返回值:数据库连接对象
* */
public static Connection getConnection()
//定义一个连接对象
Connection conn=null;
//定义连接数据库的URL资源
String url="jdbc:oracle:thin:@192.168.3.9:1521:oracle";
//定义连接数据库的用户名称与密码
String username="faqsys";
String password="faqsysuser";
//加载数据库连接驱动
String className="oracle.jdbc.driver.OracleDriver";
try
Class.forName(className);
catch (ClassNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();

//获取数据库的连接对象
try
conn=DriverManager.getConnection(url,username,password);
System.out.println("数据库连接建立成功...");
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();

//返回连接对象
return conn;

参考技术A oracle 11g的url应该是这个
你试试:
String userName="scott";
String password="tiger";
String url="jdbc:oracle:thin:@//localhos:1521/CLRExtProc";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(url, username, password);
参考技术B 我当初连接ORACLE时也无法连接,后来干脆连接的ACCESS。 参考技术C 首先,scott账户是默认无法使用的。请先通过oracle开起这个账户。
alter user scott account unlock;
指定密码
alter user scott identified by tiger

用Java连接Oracle ,可以用Java往Oracle写入数据,但是用sql往Oracle插入数据时,关闭了再打开,数据消失

但用Java插入的数据就不会消失,是什么问题呢? (没有财富了)
我的代码是这样的,麻烦各位大神帮忙看一下
try
conn=DriverManager.getConnection(dburl,dbuser,password);
sql=conn.createStatement();
sql.executeUpdate("INSERT INTO teacher values('2009307','张小小','男','ABCD','623371','dfds')");
conn.close();
sql.close();
catch(SQLException e)System.out.print(e);

可以使用 %rowcount 返回受影响的行数
SQL%rowcount --用户成功提取数据的行数
示例:向表中插入一行数据,询问是否插入成功.
declare
iCount int:=0;
begin
insert into place values(2,'beijing');
DBMS_output.put_line('游标所影响的行数:'||SQL%rowcount);
if SQL%NotFount then
DBMS_output.put_line('NotFount为真);
else
DBMS_output.put_line('NofFount为假');
end if;

if SQL%Fount then
DBMS_output.put_line('Fount为真);
else
DBMS_output.put_line('Fount为假');
end if;
if SQL%isopen then
DBMS_output.put_line('isOpen为真);
else
DBMS_output.put_line('isOpen为假');
end if;

isCount:=SQL%rowcount;
DBMS_output.put_line('影响了'||isCount||'行');
end;
参考技术A 你connection的setautocommit是不是设了false

执行完语句之后加上con.commit();

或者sql语句改改

begin

sqlStr ......

commit ;

end ;
参考技术B 估计是你语句最后没有加入commit; 没有提交的缘故吧 参考技术C 就是没用自动提交,也没有手动提交
conn.commit();
sql.close();
conn.close();
改成这样就可以,另,建议先管Statement再关Connection,否则关Statement时候可能会报错
参考技术D 通过编程语言去连接数据库(以java为例),接口有jdbc或hibernate,会自动提交
如果是用jdbc,在weblogic或was中会有缓存池的存在。
而使用hibernate框架,其也自带2级缓存机制。
而sql在使用pl/sql或toad去执行sql后,更新的数据只是会在redo里有记录,正不会真实提交到undo中,只有commit之后提交才可
第5个回答  2010-08-28 用sql往Oracle插入数据时,默认不是提交的,你需要手动提交。
比如执行sql后你需要输入 commit 进行提交
再提一点,你这段代码也太水了
try
conn=DriverManager.getConnection(dburl,dbuser,password);
sql=conn.createStatement();
sql.executeUpdate("INSERT INTO teacher values('2009307','张小小','男','ABCD','623371','dfds')");
conn.close();
sql.close();
catch(SQLException e)System.out.print(e);
1、将关闭语句放到finally里面去
2、关闭顺序应该是先关闭 statement,在关闭conn,先打开的后关,后打开的先关,就跟关门一样。

以上是关于我的java和oracle连接出了问题,帮忙看一下。代码是:的主要内容,如果未能解决你的问题,请参考以下文章

IDEA Maven项目为啥下载不了jar包呢?大神帮忙看一下怎么回事

如何在java代码中连接后检查oracle数据库版本

oracle过程中判断当前日期的日是否5,10,15....但是并不执行,求帮忙看一下在线等

急,请JAVA高手帮忙解决一下:Error finishing response java.lang.OutOfMemoryError: Java heap space

win7和linux双系统出了问题,大神帮忙看下!!!

java jdbc 删除数据库表中一列后不能用SQL语句在更新和查询表中其他数据了