本文将帮助您学习如何使用JDBC(Java数据库连接)API进行基本的数据库操作。这些基本操作是 插入、选择、更新和删除 声明 SQL 语言虽然目标数据库系统是Oracle数据库,但同样的技术也可以应用于其他数据库系统,因为使用的查询语法是所有关系数据库系统通常支持的标准SQL。 先决条件:
- JDK
- 甲骨文数据库 (下载Oracle数据库快速版11g第2版)
- 用于Oracle数据库的JDBC驱动程序 (下载Oracle Database 11g release 2 JDBC驱动程序) .你需要补充 ojdbc6。罐子 到项目库。
你需要通过 本文 文章继续之前,为了更好地理解。 在Oracle数据库中创建用户并授予所需权限:
- 使用cmd打开oracle。在cmd中输入sqlplus,然后按Enter键。
- 创建受密码保护的用户id。此用户id称为子用户。
create user identified by ;
- 向子用户授予所需的权限。为了简单起见,我们将数据库管理员权限授予子用户。
conn / as sysdba;grant dba to ;
创建带有空白字段的示例表:
CREATE TABLE userid( id varchar2(30) NOT NULL PRIMARY KEY, pwd varchar2(30) NOT NULL, fullname varchar2(50), email varchar2(50));
主要的JDBC接口和类
让我们概述一下本文将使用的JDBC的主要接口和类。它们都可以在 JAVAsql 包裹:
- 班forName(): 在这里,我们在运行时将驱动程序的类文件加载到内存中。不需要使用新的或创建对象。
Class.forName("oracle.jdbc.driver.OracleDriver");
- 驾驶员管理员: 此类用于为特定数据库类型(例如本教程中的Oracle数据库)注册驱动程序,并通过其应用程序与服务器建立数据库连接 getConnection() 方法
- 连接: 这个接口代表一个已建立的数据库连接(会话),我们可以从中创建语句来执行查询和检索结果,获取关于数据库的元数据,关闭连接,等等。
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "login1", "pwd1");
- 陈述 和 准备好的报表 :这些接口分别用于执行静态SQL查询和参数化SQL查询。 陈述 是的超级接口 准备好的报表 界面他们常用的方法是:
- 布尔执行(字符串sql): 执行常规SQL语句。它回来了 符合事实的 如果查询返回 结果集 ,如果查询返回更新计数或不返回任何内容,则为false。此方法可用于 陈述 只有
- int executeUpdate(字符串sql): 执行INSERT、UPDATE或DELETE语句,并返回一个UPDATE account,指示受影响的行数(例如,插入1行、更新2行或受影响0行)。
Statement stmt = con.createStatement(); String q1 = "insert into userid values ('" +id+ "', '" +pwd+ "', '" +fullname+ "', '" +email+ "')"; int x = stmt.executeUpdate(q1);
- ResultSet executeQuery(字符串sql): 执行SELECT语句并返回 结果集 对象,其中包含查询返回的结果。
Statement stmt = con.createStatement(); String q1 = "select * from userid WHERE id = '" + id + "' AND pwd = '" + pwd + "'"; ResultSet rs = stmt.executeQuery(q1);
- 结果集: 包含SELECT查询返回的表数据。使用此对象使用next()方法在结果集中的行上迭代。
- SQLException: 这个checked异常被声明为由上述所有方法引发,因此在调用上述类的方法时,我们必须显式地捕获这个异常。
连接到数据库
Oracle数据库服务器监听默认端口 1521 在 本地服务器 。以下代码段连接到数据库名称 用户ID 由用户 逻辑1 密码 pwd1 .
JAVA
// Java program to illustrate // Connecting to the Database import java.sql.*; public class connect { public static void main(String args[]) { try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); // Establishing Connection Connection con = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:orcl" , "login1" , "pwd1" ); if (con != null ) System.out.println( "Connected" ); else System.out.println( "Not Connected" ); con.close(); } catch (Exception e) { System.out.println(e); } } } |
Output :Connected
注: 在这里 神谕 getConnection()方法中的数据库URL指定Oracle数据库的SID。对于Oracle database 11g,它是 奥克尔 而对于oracle database 10g,则是如此 xe .
实现Insert语句
JAVA
// Java program to illustrate // inserting to the Database import java.sql.*; public class insert1 { public static void main(String args[]) { String id = "id1" ; String pwd = "pwd1" ; String fullname = "geeks for geeks" ; String email = "geeks@geeks.org" ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); Connection con = DriverManager.getConnection(" jdbc:oracle:thin: @localhost : 1521 :orcl ", " login1 ", " pwd1"); Statement stmt = con.createStatement(); // Inserting data in database String q1 = "insert into userid values('" +id+ "', '" +pwd+ "', '" +fullname+ "', '" +email+ "')" ; int x = stmt.executeUpdate(q1); if (x > 0 ) System.out.println( "Successfully Inserted" ); else System.out.println( "Insert Failed" ); con.close(); } catch (Exception e) { System.out.println(e); } } } |
Output :Successfully Registered
实现更新语句
JAVA
// Java program to illustrate // updating the Database import java.sql.*; public class update1 { public static void main(String args[]) { String id = "id1" ; String pwd = "pwd1" ; String newPwd = "newpwd" ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); Connection con = DriverManager.getConnection(" jdbc:oracle:thin: @localhost : 1521 :orcl ", " login1 ", " pwd1"); Statement stmt = con.createStatement(); // Updating database String q1 = "UPDATE userid set pwd = '" + newPwd + "' WHERE id = '" +id+ "' AND pwd = '" + pwd + "'" ; int x = stmt.executeUpdate(q1); if (x > 0 ) System.out.println( "Password Successfully Updated" ); else System.out.println( "ERROR OCCURED :(" ); con.close(); } catch (Exception e) { System.out.println(e); } } } |
Output :Password Successfully Updated
实现Delete语句
JAVA
// Java program to illustrate // deleting from Database import java.sql.*; public class delete { public static void main(String args[]) { String id = "id2" ; String pwd = "pwd2" ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); Connection con = DriverManager.getConnection(" jdbc:oracle:thin: @localhost : 1521 :orcl ", " login1 ", " pwd1"); Statement stmt = con.createStatement(); // Deleting from database String q1 = "DELETE from userid WHERE id = '" + id + "' AND pwd = '" + pwd + "'" ; int x = stmt.executeUpdate(q1); if (x > 0 ) System.out.println( "One User Successfully Deleted" ); else System.out.println( "ERROR OCCURED :(" ); con.close(); } catch (Exception e) { System.out.println(e); } } } |
Output :One User Successfully Deleted
实现Select语句
JAVA
// Java program to illustrate // selecting from Database import java.sql.*; public class select { public static void main(String args[]) { String id = "id1" ; String pwd = "pwd1" ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); Connection con = DriverManager.getConnection(" jdbc:oracle:thin: @localhost : 1521 :orcl ", " login1 ", " pwd1"); Statement stmt = con.createStatement(); // SELECT query String q1 = "select * from userid WHERE id = '" + id + "' AND pwd = '" + pwd + "'" ; ResultSet rs = stmt.executeQuery(q1); if (rs.next()) { System.out.println( "User-Id : " + rs.getString( 1 )); System.out.println( "Full Name :" + rs.getString( 3 )); System.out.println( "E-mail :" + rs.getString( 4 )); } else { System.out.println( "No such user id is already registered" ); } con.close(); } catch (Exception e) { System.out.println(e); } } } |
Output :User-Id : id1Full Name : geeks for geeksE-mail :geeks@geeks.org
注: 这里的列索引是基于1的,第一列位于索引1,第二列位于索引2,依此类推。 对于其他数据类型,ResultSet提供了适当的getter方法:
- getString()
- getInt()
- getFloat()
- getDate()
- getTimestamp()
- …..
本文由 桑吉特·阿南德 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。