您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Java利用JDBC连接Oracle数据库的问题与原代码(注释)
Java利用JDBC连接Oracle数据库的问题与原代码(注释)主要代码:Importjava.sql.Connection;Importjava.sql.DriverManager;Driver=“oracle.jdbc.driver.OracleDriver”;//连接的驱动url=“jdbc:odbc:thin:@127.0.0.1:1521:USER”;//连接的URLusername=“”;//登录数据库的用户名password=“”;//登录数据库的密码Class.forName(Driver);//使用Class.forName()方法自动创建这个驱动程序的实例并自动调用DriverManager来注册它,加载Oracle驱动程序Connectionconn=null;conn=DriverManager.getConnection(url,username,password);//获取数据库的连接conn.close();//关闭当前对象连接1.导入Oracle的jar包,项目名(TestConnection)右键BulidPathConfigureBuildpath(右边界面)LibrariesAddExternalJars找到自己安装oracle的路径(我的是F:\app\user\product\11.2.0\dbhome_1\jdbc\lib),找到ojdbc6.jar或者其他的,点击确认导入即可。(这是我建立的)2.连接数据库的URL为,jdbc:oracle:thin:@127.0.0.1:1521:USER,127.0.0.1代表使用本地数据库,或者使用jdbc:oracle:thin:@localhost:1521:USER,其Oracle数据库的一般端口均为1521。3.Oracle数据库的用户,一般在安装时设置的密码为DBA的密码(用户名为SYS),SYS用户是数据库中的最高权限的数据库管理员。用java连接数据库时使用的是Normal的用户,因此使用SYS登录后,设置新用户,并设置权限。设置新用户:createuserusernameidentifiedbypassword设置权限:grantcreatesessiontousernamegrantcreateselectanytabletousernamegrantconnect,resourcetousername(出现ORA-01950错误,是由于表空间操作的权限不足)4.编译SQL语句Statement和PreparedStatement的区别PreparedStatement继承Statement,是其子类,execute、executeQuery、execuUpdatePreparedStatementpstmt=null;Statementstmt=newcreateStatement();查看数据:select_Sql=“select*fromtable”;Resultsetrs=stmt.excuteQuery(select_Sql);pstmt=conn.preparedStatement(select_Sql);Resultsetrs=pstmt.excuteQuery();插入数据:insert_Sql1=“insertintotable(col1,col2,col3)value(‘”+var1+”’,’”+var2+”’,’”+var3+”’)”;stmt.excuteUpdate(insert_Sql1);insert_Sql2=“insertintotable(col1,col2,col3)value(?,?,?)”;//sql语句不再采用拼接方式,应用占位符问号的方式写sql语句Pstmt=conn.preparedStatement(insert_Sql2);pstmt.setString(1,var1);//对占位符设置值,占位符顺序从1开始,第一个参数是占位符的位置,第二个参数是占位符的值pstmt.setString(2,var2);pstmt.setString(3,var3);pstmt.excuteUpdate();//返回值为true或false,可以接受返回值,判断是否插入成功修改数据://同样利用占位符alter_Sql=“updatetablesetcol2=?wherecol1=?”;pstmt.setString(1,var1);//若为int类型的,则使用pstmt.setInt(1,var1);pstmt.setString(2,var2);删除数据:delete_Sql=“delectfromtablewherecol=?”PraparedStatement提高了性能,提高了安全性。源代码:建立两个类数据连接与关闭,DBConnection类importjava.sql.Connection;importjava.sql.DriverManager;publicclassDBConnection{//Oracle数据库连接URLprivatefinalstaticStringdb_url=jdbc:oracle:thin:@127.0.0.1:1521:USER;//Oracle数据库连接驱动privatefinalstaticStringdb_Driver=oracle.jdbc.driver.OracleDriver;//数据库用户名privatefinalstaticStringdb_username=javao;//数据库连接密码privatefinalstaticStringdb_password=javaoracle;/***获取数据库连接*@return*/publicConnectiongetConnection(){//声明Connection连接对象Connectionconn=null;try{//使用Class.forName()方法自动创建这个驱动程序的实例并自动调用DriverManager来注册它Class.forName(db_Driver);//加载Oracle驱动程序//通过DriverManager的getConnection()方法获取数据库的连接conn=DriverManager.getConnection(db_url,db_username,db_password);}catch(Exceptione){e.printStackTrace();}returnconn;}/***关闭数据库连接**@paramconnect*/publicvoidcloseConnection(Connectionconn){try{if(conn!=null){if(!conn.isClosed()){//判断当前对象是否关闭,未关闭则关闭conn.close();}}}catch(Exceptione){e.printStackTrace();}}}实现数据存取类,DBFactory类importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclassDBFactory{//数据库连接对象privateDBConnectiondbconn=newDBConnection();/***获取数据库连接对象实例**@return*/publicDBConnectiongetDBConnectionInstace(){if(dbconn==null){dbconn=newDBConnection();returndbconn;}else{returndbconn;}}/***关闭数据库连接**/publicvoidcloseConnection(Connectionconn){if(dbconn==null){dbconn=newDBConnection();}dbconn.closeConnection(conn);}/***实例化调用*@throwsSQLException**/publicstaticvoidmain(String[]arg)throwsSQLException{DBFactoryfactory=newDBFactory();//创建对象Connectionconn=factory.getDBConnectionInstace().getConnection();//建立连接,使用创建的对象调用方法System.out.println(连接数据库成功!);Statementstmt=conn.createStatement();//创建SQL语句的编码对象Stringsql=select*fromatable;ResultSetrs=stmt.executeQuery(sql);while(rs.next()){//读取数据StringM1=rs.getString(订单号);StringM2=rs.getString(原分类);StringM3=rs.getString(订单内容);System.out.println(订单号=+M1+原分类=+M2+订单内容=+M3);}rs.close();factory.closeConnection(conn);}}输出结果:
本文标题:Java利用JDBC连接Oracle数据库的问题与原代码(注释)
链接地址:https://www.777doc.com/doc-2880741 .html