myeclipse连接oracle

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了myeclipse连接oracle相关的知识,希望对你有一定的参考价值。

错误如下:
Exception in thread "main" java.sql.SQLException: ORA-01017: invalid username/password; logon denied

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:277)
at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:784)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:361)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:413)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.jdbcOracle.Test.main(Test.java:9)

是oracle用户权限的问题吗?

参考技术A 看一下配置的java连接部分,用户名和密码或者连接的sid是否正确。
这个就是代码上连接数据库错误,不是oracle权限问题,如果该用户在sqlplus下可以连接,就存在权限问题,是代码中配置问题。
参考技术B 出现invalid username/password; logon denied错误解决方案
1.Dos下输入命令:sqlplus sys/安装时设置的密码 as sysdba (回车)
2.然后输入命令:alter user scott account unlock;回车后,会出现“用户已更改”字样,接着看下一步。
3.输入命令: conn scott/tiger回车后,会出现一个错误提示(如下): ERROR: ORA-28001: the password has expired 更改 scott 的口令 新口令:
4.输入新口令;
5.重复输入新口令。
最后,搞定!追问

谢谢啊~弄好了,不过这是因为用户被锁定吗?

追答

有可能,估计有别人正在使用或者更改了。我以前出这种错误就是别的项目组同时使用数据库,锁定了用户

本回答被提问者采纳
参考技术C 看看连接是不是有问题: try
Class.forName("oracle.jdbc.driver.OracleDriver"); //加载驱动

conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.10:1521:UsersDB","root2","1234567");
catch (ClassNotFoundException e)
e.printStackTrace();
catch (SQLException e)
e.printStackTrace();
参考技术D 一看就是用户名和密码输入有错误追问

没有错误的,我从plsql都能进去

知了堂学习笔记Eclipse,Myeclipse连接MySQL数据库和Oracle数据库

一.连接MySQL数据库

  1.由于Eclipse,Myeclipse都没有连接MySQL数据的架包,我们需要自行下载MySQL连接架包 mysql-connector(官方链接:http://dev.mysql.com/downloads/connector/j/5.0.html),下载版本最好是最新版。

  2.下载好后,复制到你的项目里任何位置,然后右键架包选择 Build path -> add to Build path,然后点击项目的Libraries里的Referenced Libraries 如果出现一个“奶瓶”后 mysql-connector。。。,表示导入成功,我们可以开始写连接数据库的方法了。

  

  3.导入成功后,我们第一步就是 :加载及注册驱动程序. Class.forName("com.mysql.jdbc.Driver");

  4.获取数据库链接:DriverManager.getConnection(url, user, pwd); url就是你mysql数据库的地址,本地数据库一般为:"jdbc:mysql://localhost:3306/数据库名",user,pwd就是你MySQL数据库的用户名和密码了。

具体代码:

public class JDBCUtils_MySQL {
    private static String user = "root";    //你的MySQL用戶名
    private static String pwd = "123456";    //密碼
    private static String url = "jdbc:mysql://localhost:3306/ofo";//你的数据库地址   ofo是数据库名字
    /*
     * 加载数据库驱动 static 让数据库只加载一次
     */
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /*
     * 获得数据库链接
     */
    public static Connection getConnection() {
        try {
            Connection con = DriverManager.getConnection(url, user, pwd);
            return con;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
}

  连接数据库的方法类写好了,我们就来简单的用一下

  

public class mysqlTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Connection conn = JDBCUtils_MySQL.getConnection(); //调用连接方法,获得一个数据库链接
        String sql="select username from user where uid=\'1\'"; //要执行的SQL语句
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            if(rs.next()) {
                System.out.println("用户名为:"+rs.getString(1));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

  我这里是: 查询user表中ID为1 的用户名,结果我就不贴图了。

二.链接Oracle数据库

  1.Oracle数据库就不用专门去下载驱动包了,安装的Oracle目录里有驱动包(ojdbc5.jar),Oracle的驱动包在安装目录下:oracle\\product\\11.2.0\\dbhome_1\\jdbc\\lib下(我的Oracle版本是11g) ,包名为:ojdbc5.jar,我们直接去引入就行了。复制到你的项目中,操作和导入MySQL驱动包一样,

  连接Oracle数据库的步骤和MySQL差不多,我直接贴代码:

public class JDBCUtils_Oracle {
    private static String user = "cjl"; // oracle 用户名
    private static String pwd = "123456"; // 用户密码
    private static String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // localhost是因为数据库在本地,1521是端口号
    /*
     * 加载数据库驱动    static让数据库只加载一次
     */
    static {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /** 获得数据库连接 */
    public static Connection getConnection() {
        try {
            Connection conn = DriverManager.getConnection(url, user, pwd);
            return conn;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

  照样我们做个测试

public class oracleTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Connection conn = JDBCUtils_Oracle.getConnection(); //方法和MySQL一样,只是用的方法类不同
        String sql="select username from user where uid=\'1\'"; //要执行的SQL语句
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            if(rs.next()) {
                System.out.println("用户名为:"+rs.getString(1));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

欢迎大家进入知了堂社区——一个好玩有趣的学习社区:http://www.zhiliaotang.com

以上是关于myeclipse连接oracle的主要内容,如果未能解决你的问题,请参考以下文章

如何myeclipse建立一个数据库连接mysql

myeclipse 10 用TomCat进行数据库连接 出现505错误

MyEclipse如何连接数据库

MyEclipse连接MySQL数据库

myeclipse连接数据库sql server

MyEclipse连接不上genymotion的解决方式