使用java连接oracle数据库的详细步骤,以及怎样在oracle数据库里建库建表,和用户名及权限的设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用java连接oracle数据库的详细步骤,以及怎样在oracle数据库里建库建表,和用户名及权限的设置相关的知识,希望对你有一定的参考价值。

先给30分,如果成功的话再给100分,我一定会言出必行,非常紧急!谢谢大家!

你按照我以下的步骤就可以建立java跟oracle的链接:
(1)首先要安装oracle数据库(这是废话,不过这个过程中你可以设置用户名机密码他的权限相当于管理员),然后启动查询分析器再用 great database databasename(数据 库的名称)的命令建立数据库,之后就是要建立数据库的表,建表的命令如下(我给你的例子是建立一个学生表):
usr database/*你刚才所建立的数据库的名称,一定要相同,那么你就是再这个数据库中建立了这个表*/
CREATE TABLE stu
(
sno char(10) NOT NULL /*学号字段*/
CONSTRAINT PK_sno PRIMARY KEY CLUSTERED,/*主键约束*/
sname char(8) NOT NULL, /*姓名字段*/
sex char(2) NULL, /*性别字段*/
native int NULL, /*籍贯*/
birthday varchar(20) NULL,/*学生出生日期*/
dno char(6) NULL,/*学生所在院系编号(外键)*/
spno char(8) NULL,/*专业代码(外键)*/
classno char(4) NULL,/*班级号*/
entime char(4) NULL,/*学生入校时间*/
home varchar(40) NULL,/*学生家庭住址*/
tel varchar(40) NULL/*学生联系电话*/
)
这样你的数据库和相应的表就建成了,如果你需要对数据库的权限进行设置那么就涉及到角色的赋予或者你安装oracle时需要进行设置的用户明及密码,这块说来就话长啦!如果你只是学习java和数据库的链接,那么这个可以暂时放一边,如果你非得想知道那么你需要系统学习数据库的知识。我这里就不跟你介绍了。建立完表之后就需要对表插入数据(插入数据可以用java编程,用自己设置的软件插入数据也可以用数据库的查询分析气用sql语句插入)
(2)这一步也是java跟数据库链接的关键,在你安装了数据库的那台pc机或者服务器注册数据源步骤:进入你电脑的控制面板——管理工具——数据源——系统DNS(选中)——添加(在这里面有你要添加的数据源添加microsoft DOBC for Orccle,再这里点击完成后会弹出一个对话框,要你填写数据源的名称这个名称一定要记住,java链接程序编程时需要用到这个名称,还有要填服务器的名称,这个名称需要你的服务器名称,如果你是单台pc机实验,那么在你数据库登录的界面那个服务器名称就可以了,然后点击下去进行必要的设置就可以了),这样我们对数据库部分的工作已经完成啦!接下来就是完成java的编程部分。
(3)这里就是java的编程部分,这里我给了你一个我从教材弄来的编好并调试成功的程序(当然这跟你自己建立的数据库是相关的):
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
class add extends JFrame
private StudentUI userInterface;
private JButton clearButton, writeButton;
// 加载启动程序和建立数据库的地址,远程和对本机的数据库加载是不一样得,这里给你一个对本机数据库的操作
static final String JDBC_DRIVER = "("oracle.jdbc.driver.OracleDriver";
static final String DATABASE_URL = "oracle.jdbc.driver:刚才叫你记住的那个数据源的名字";
// declare Connection and Statement for accessing
// and querying database
private Connection connection;
private Statement statement;
String sqlString ;
//set up column names
String names[] = "学 号","姓 名","性 别","年 龄","所 在 系";
// set up GUI
public Add()

super( "Add a record of students" );
initialize(); //connect to database
// create instance of reusable user interface
userInterface = new StudentUI( names ); // four textfields
getContentPane().add( userInterface, BorderLayout.CENTER );

// configure button doTask1 for use in this program
writeButton = userInterface.getDoTask1Button();
writeButton.setText( "保存" );

// register listener to call addRecord when button pressed
writeButton.addActionListener(

// anonymous inner class to handle writeButton event
new ActionListener()

// call addRecord when button pressed
public void actionPerformed( ActionEvent event )

addRecord();


// end anonymous inner class

); // end call to addActionListener

// configure button doTask2 for use in this program
clearButton = userInterface.getDoTask2Button();
clearButton.setText( "清除" );

// register listener to call userInterface clearFields() when button pressed
clearButton.addActionListener(

// anonymous inner class to handle clearButton event
new ActionListener()

// call userInterface clearFields() when button pressed
public void actionPerformed( ActionEvent event )

userInterface.clearFields();


// end anonymous inner class

); // end call to addActionListener

// register window listener to handle window closing event
addWindowListener(

// anonymous inner class to handle windowClosing event
new WindowAdapter()

// add current record in GUI to file, then close file
public void windowClosing( WindowEvent event )


terminate(); //close databse


// end anonymous inner class

); // end call to addWindowListener

setSize( 300, 200 );
setVisible( true );

// end of constructor

// connect to database
public void initialize()

try

Class.forName( JDBC_DRIVER );

// establish connection to database
connection = DriverManager.getConnection( DATABASE_URL,"sa",null );

// create Statement for querying database
statement = connection.createStatement();

catch ( SQLException sqlException )
JOptionPane.showMessageDialog( null, sqlException.getMessage(),
"Database Error", JOptionPane.ERROR_MESSAGE );

System.exit( 1 );


// detect problems loading database driver
catch ( ClassNotFoundException classNotFound )
JOptionPane.showMessageDialog( null, classNotFound.getMessage(),
"Driver Not Found", JOptionPane.ERROR_MESSAGE );

System.exit( 1 );

// end method openFile

// close database
public void terminate()


try
statement.close();
connection.close();


// handle exceptions closing statement and connection
catch ( SQLException sqlException )
JOptionPane.showMessageDialog( null,
sqlException.getMessage(), "Database Error",
JOptionPane.ERROR_MESSAGE );

System.exit( 1 );

// end method

// add record to file
public void addRecord()


String fieldValues[] = userInterface.getFieldValues();

// if sno field value is not empty
if ( ! fieldValues[ StudentUI.SNO ].equals( "" ) )

// output values to student
try
int numberAge = Integer.parseInt(
fieldValues[ StudentUI.SAGE ] );
//define string for sql insert statement
String sqlInsert = "INSERT INTO student " +
"VALUES ('" +
fieldValues[0] + "', '" +
fieldValues[1] +"', '"+
fieldValues[2]+ "', "
+numberAge+",'"+fieldValues[4] + "')";
int result = statement.executeUpdate(sqlInsert);
if (result!=0)
userInterface.clearFields();
JOptionPane.showMessageDialog( this,
"Inserted sucess!", "Insert Result",
JOptionPane.INFORMATION_MESSAGE );


// end try

// process invalid age number
catch ( NumberFormatException formatException )
JOptionPane.showMessageDialog( this,
"Bad age number ", "Invalid Number Format",
JOptionPane.ERROR_MESSAGE );


// process exceptions from file output
catch (SQLException ee)
System.out.println(ee);
//end of if sno field value is not empty

else //if sno field value is empty
JOptionPane.showMessageDialog( this,
"Bad sno number ", "Invalid Number Format",
JOptionPane.ERROR_MESSAGE );

// end method addRecord

public static void main( String args[] )

new AddStudentFrame();


// end AddStudentFrame class

基本就这样啦!不过那个界面的设计代码就不给你啦!
参考技术A import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class BaseDao
private Connection conn = null;

static
try
Class.forName("oracle.jdbc.driver.OracleDriver");
catch (ClassNotFoundException e)
e.printStackTrace();



public Connection getConnection()
String url = "jdbc:oracle:thin:@192.168.1.100:1521:orcl";
String user = "scott";
String password = "tiger";
try
conn = DriverManager.getConnection(url, user, password);
catch (SQLException e)
e.printStackTrace();

return conn;

public void closeConn()
try
if (!conn.isClosed())
conn.close();

catch (SQLException e)
// TODO 自动生成 catch 块
e.printStackTrace();





关于oracle的使用,需要注意以下几点:
1,你在什么状态下安装的oracle,使用时必须是什么状态(比如联网状态下安装的oracle,使用时必须联网)

注:当你山穷水尽的时候进行2,3步。
2,当你的ip发生改变是需要修改监听器的ip,(路径如下:D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora)打开文件,找到host=。。。(例我的HOST = 192.168.1.100)你可以把他修改为你的(host=你的ip)即可。
3,当你修改了你的host那么你就要在如下目录(D:\oracle\product\10.2.0\db_1)找到localhost文件夹,并把文件名修改为你的ip。

这是我个人的一点小小感悟,希望对你有帮助。
参考技术B Class.forName("oracle.jdbc.driver.OracleDriver") new Instance ();
String url ="jdbc:oracle:thin:@localhost:1521:orcl";
String user="scott";(用户名)
String password="tiger";(密码)
Connection con=DriverManager.getConnection(url,user,password);
Statement stmt =conn.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from ";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next)



这就完成了简单查询
如果要设置权限的话 要使用grant 语句
例如 :grant select,update on table table_name to user
参考技术C 我先给你连接数据库的类吧!
步骤1
package test.procedure;

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

public class ConnectOrcl
String driver,url,user,pwd;
public ConnectOrcl()
driver = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
user = "scott";
pwd = "tiger";

public Connection getConn()
Connection conn = null;
try
Class.forName(driver);
conn = DriverManager.getConnection(url,user,pwd);
catch (ClassNotFoundException e)
// TODO 自动生成 catch 块
e.printStackTrace();
catch (SQLException e)
// TODO 自动生成 catch 块
e.printStackTrace();

return conn;

// 关闭与数据库的连接的方法
public void closeConn()
try
if (!conn.isClosed())
conn.close();

catch (SQLException e)
// TODO 自动生成 catch 块
e.printStackTrace();


public static void main(String[] args)
if(conn != null)
system.out.println("连接成功!")


追问

你好!谢谢你的回答!我用的JDK是1.6 。用my Eclipse加载的驱动包是ojdbc6.jar和class12.jar可是数据库连接还是有错误。
错误语句:conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:oracl", "scott", "tiger");
错误提示:Exception in thread "main" java.sql.SQLRecoverableException: Io 异常: The Network Adapter could not establish the connection
麻烦你了 我有急用!!!

追答

首先你要打开你ORACLE相关的服务,这样才能连的上。你的问题大概就是没有打开oracle服务,在“运行”输入“services”,点击查看本地服务,翻到与oracle相关的,你打开就是了,只需要开两个就行了,一个是oracleServicesORCL,还有一个以TNSListener为结尾的

追问

恩 主要是我的这个TNSListener一启动就自动关闭,我在网上找了一下资料说是Oracle数据库服务器地址不一致,需要在listeners.org里修改。修改之后问题还是一样,TNSListener仍然是启动后又自动关闭啊

追答

不会吧,你的Oracle数据库装好了吗?怎么会自动关闭呢?我估计应该是Oracle服务没有装好

本回答被提问者和网友采纳
参考技术D 这个说起来话有点长了。。。

Oracle——plsql远程连接数据库的详细步骤

1.将instantclient_12_1-x32.rar文件解压缩,解压之后在下面instantclient_12_1-x32\network\admin\tnsnames.ora,找到tnsnames.ora这个文件,在这个文件里面配置详细信息
  如果是本地没有安装客户端,可以像下面这样配置
    EISP =
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.86 )(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = jnccrm )
    )
)
    这里可以根据不同的需求做改变

2.配置环境变量
   新建环境变量  NLS_LANG   SIMPLIFIED CHINESE_CHINA.ZHS16GBK
                 ORACLE_HOME  
     TNS_ADMIN   E:\instantclient_12_1-x32\network\admin

3.进入plsql--工具--首选项--连接--oracle主目录名(自动检测为空),导入路径E:\instantclient_12_1-x32
                                 OCI库(自动检测为空),导入路径E:\instantclient_12_1-x32\oci.dll
   配置成功,重启plsql就可以实现远程连接数据库了

















以上是关于使用java连接oracle数据库的详细步骤,以及怎样在oracle数据库里建库建表,和用户名及权限的设置的主要内容,如果未能解决你的问题,请参考以下文章

Oracle——plsql远程连接数据库的详细步骤

怎么用java连接oracle数据库,需要详细解释

用java做界面连接oracle数据库实现增删改查功能,具体步骤怎么做?

Oracle 11g 两个节点RAC 搭建单实例DG详细步骤以及注意事项

Java连接Mysql数据库步骤详细讲解

Linux 安装 Elasticsearch6.4.x 详细步骤以及问题解决方案