在Java | SQL中执行数据库操作创建、插入、更新、删除和选择

本文将帮助您学习如何使用JDBC(Java数据库连接)API进行基本的数据库操作。这些基本操作是 插入、选择、更新和删除 声明 SQL 语言虽然目标数据库系统是Oracle数据库,但同样的技术也可以应用于其他数据库系统,因为使用的查询语法是所有关系数据库系统通常支持的标准SQL。 先决条件:

null

你需要通过 本文 文章继续之前,为了更好地理解。 在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查询。 陈述 是的超级接口 准备好的报表 界面他们常用的方法是:
    1. 布尔执行(字符串sql): 执行常规SQL语句。它回来了 符合事实的 如果查询返回 结果集 ,如果查询返回更新计数或不返回任何内容,则为false。此方法可用于 陈述 只有
    2. 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主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享