如何在 JDBC 中使用 PreparedStatement 在表中存储十进制值?
jdbcobject oriented programmingprogramming更新于 2025/7/2 14:07:17
要使用 PreparedStatement 将记录插入包含十进制值的表中,您需要 −
- 注册驱动程序 − 使用 DriverManager 类的 registerDriver() 方法注册驱动程序类。将驱动程序类名称作为参数传递给它。
- 建立连接 − 使用 DriverManager 类的 getConnection() 方法连接到数据库。将 URL(字符串)、用户名(字符串)、密码(字符串)作为参数传递给它。
- 创建语句 − 使用 Connection 接口的 prepareStatement() 方法创建一个 PreparedStatement 对象。将包含占位符的 INSERT 查询以字符串格式作为参数传递给此方法。
PreparedStatement pstmt = con.prepareStatement("INSERT INTO customer 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 向 customer 表中插入 3 条记录。这里我们使用 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 {
//注册驱动程序
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//获取连接
String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("连接已建立......");
//创建语句
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 ....");
}
}
输出
连接已建立...... Records inserted .......
您可以使用 SELECT 语句验证学生表的内容 −
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)

