如何在JDBC中使用PreparedStatement将十进制值存储在表中?
要使用PreparedStatement将记录插入包含十进制值的表中,您需要-
注册驱动程序-使用DriverManager类的registerDriver()方法注册驱动程序类。将驱动程序类名称作为参数传递给它。
建立连接-使用DriverManager类的getConnection()方法连接数据库。将URL(字符串),用户名(字符串),密码(字符串)作为参数传递给它。
创建语句-使用Connection接口的方法创建PreparedStatement对象prepareStatement()。将带有占位符的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();
执行查询-使用execute()Statement接口的方法执行CREATE查询。
pstmt.execute();
示例
让我们使用CREATE语句在MySQL数据库中创建一个客户表,如下所示-
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条记录插入到customer表中。在这里,我们使用该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("Connection established......");
//创建语句
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)