如何在 JDBC 中使用 PreparedStatement 在表中存储十进制值?
jdbcobject oriented programmingprogramming
要使用 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)