你按照我以下的步骤就可以建立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
基本就这样啦!不过那个界面的设计代码就不给你啦!
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。
这是我个人的一点小小感悟,希望对你有帮助。
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
我先给你连接数据库的类吧!
步骤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("连接成功!")
}
}
}
这个说起来话有点长了。。。