如何在 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)
广告