如何使用 JDBC 创建包含十进制值的表?
jdbcobject oriented programmingprogramming
无法无符号的解包浮点数。在解包十进制中,每个十进制数对应一个字节。需要定义显示长度 (M) 和十进制数 (D)。NUMERIC 是 DECIMAL 的同义词。
要定义具有十进制值作为数据类型的列,请遵循以下给出的语法 −
column_name DECIMAL(P,D);
其中 −
- P 是表示数字位数的精度(范围为 1 到 65)
- D 是表示小数点后数字位数的小数位数。
注意 −在 MySQL 中,D 应为 <= P。
您可以在 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 API 在数据库中创建一个十进制值类型的表,您需要 −
- 注册驱动程序 − 使用 DriverManager 类的 registerDriver() 方法注册驱动程序类。将驱动程序类名称作为参数传递给它。
- 建立连接 − 使用 DriverManager 类的 getConnection() 方法连接数据库。将 URL(字符串)、用户名(字符串)、密码(字符串)作为参数传递给它。
- 创建语句 − 使用 Connection 接口的 createStatement() 方法创建语句对象。
- 执行查询 −使用 Statement 接口的 execute() 方法执行 CREATE 查询。
示例
以下 JDBC 程序与 MySQL 建立连接并创建一个名为 customers 的表,其中一列的数据类型为 DECIMAL −
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class CreateTableExample { public static void main(String args[]) throws SQLException { //注册驱动程序 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //获取连接 String mysqlUrl = "jdbc:mysql://localhost/SampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); //创建语句 Statement stmt = con.createStatement(); //查询创建表 String query = "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))"; stmt.execute(query); System.out.println("Table Created......"); } }
输出
Connection established...... Table Created......
验证
您可以使用 Describe 命令验证创建的表数据类型,如下所示 −
mysql> describe customers; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | ID | int(11) | NO | PRI | NULL | | | NAME | varchar(20) | NO | | NULL | | | AGE | int(11) | NO | | NULL | | | PERCENTAGE | decimal(18,2) | YES | | NULL | | | ADDRESS | varchar(25) | YES | | NULL | | +------------+---------------+------+-----+---------+-------+ 5 rows in set (0.06 sec)