如何使用JDBC创建具有十进制值的表?

无法解签名的解压缩浮点数。在解压缩的十进制中,每个十进制对应一个字节。需要定义显示长度(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()Statement接口的方法执行CREATE查询。

示例

下面的JDBC程序建立与MySQL的连接,并创建一个名为customer的表,该表的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)