如何在 JDBC 中使用 PreparedStatement 在表中存储十进制值?


要将记录插入包含十进制值的表中,使用 PreparedStatement 需要:

  • **注册驱动程序** — 使用 **DriverManager** 类的 **registerDriver()** 方法注册驱动程序类。将驱动程序类名作为参数传递给它。
  • **建立连接** — 使用 **DriverManager** 类的 **getConnection()** 方法连接到数据库。将 URL(字符串)、用户名(字符串)、密码(字符串)作为参数传递给它。
  • **创建语句** — 使用 Connection 接口的 prepareStatement() 方法创建一个 **PreparedStatement** 对象。将带有占位符的 INSERT 查询以字符串格式作为参数传递给此方法。
PreparedStatement pstmt = con.prepareStatement("INSERT INTO customers VALUES (?, ?, ?, ?, ?)");

使用 setXXX() 方法为绑定变量设置值。可以使用 setDouble() 方法将值设置为代表包含十进制值的列的绑定变量。

pstmt.setInt(1,1);
pstmt.setString(2, "Amit");
pstmt.setInt(3, 25);
pstmt.setDouble(4, 80.5);
pstmt.setString(5,"Hyderabad");
pstmt.executeUpdate();
  • **执行查询** — 使用 Statement 接口的 execute() 方法执行 CREATE 查询。
pstmt.execute();

示例

让我们使用下面的 CREATE 语句在 MySQL 数据库中创建一个 **customers** 表:

CREATE TABLE Students(
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   PERCENTAGE DECIMAL (18, 2),
   ADDRESS VARCHAR (25),
   PRIMARY KEY (ID)
);

下面的 JDBC 程序使用 PreparedStatement 将 3 条记录插入 customers 表中。在这里,我们使用 setDouble() 方法为代表包含十进制值的列的占位符设置值:

示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertingDecimalValue {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://127.0.0.1/mydatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating the Statement
      PreparedStatement pstmt = con.prepareStatement("INSERT INTO STUDENTS VALUES (?, ?, ?, ?, ?)");
      pstmt.setInt(1,1);
      pstmt.setString(2, "Amit");
      pstmt.setInt(3, 25);
      pstmt.setDouble(4, 80.5);
      pstmt.setString(5,"Hyderabad");
      pstmt.executeUpdate();
      pstmt.setInt(1,2);
      pstmt.setString(2, "Kalyan");
      pstmt.setInt(3, 27);
      pstmt.setDouble(4, 83.4);
      pstmt.setString(5,"Delhi");
      pstmt.executeUpdate();
      pstmt.setInt(1,3);
      pstmt.setString(2, "Renuka");
      pstmt.setInt(3, 30);
      pstmt.setDouble(4, 95.6);
      pstmt.setString(5,"Hyderabad");
      pstmt.executeUpdate();
      System.out.println("Records inserted ....");
   }
}

输出

Connection established......
Records inserted .......

您可以使用 SELECT 语句验证 Students 表的内容,如下所示:

mysql> select * from Students;
+----+--------+-----+--------+-----------+
| ID | NAME   | AGE | SALARY | ADDRESS   |
+----+--------+-----+--------+-----------+
| 1  | Amit   | 25  | 80.50  | Hyderabad |
| 2  | Kalyan | 27  | 83.40  | Dlhi      |
| 3  | Renuka | 30  | 95.60  | Hyderabad |
+----+--------+-----+--------+-----------+
3 rows in set (0.00 sec)

更新于:2019年7月30日

1K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告