问题描述:
假如现在你要对mysql数据库进行插入操作。因为要插入很多数据,为了效率,因此,你创建了一个PreparedStatement:insert into table values(?,?,?,?,?)
其中table表各列的数据类型分别为INTEGER,BIGINT,CHAR,TEXT,BINARY
现在你要向创建的PreparedStatement中的五个 ? 赋值。你已经知道PreparedStatement类有setBlog()、setBoolean()、setInt()、setDate()、setFloat()等等set方法,但是当你要向一个Mysql数据类型为BINARY的列赋值是,你不知道用PreparedStatement类的哪个set方法,setInt()?setString?还是setBytes()?没错,是setBytes()方法。可是如果mysql类型是decimal呢?是image呢?是bit呢?这个时候,如果你手里有一张Mysql/SQLServer数据类型与java基本数据类型的对应关系的表,那么一切问题都迎刃而解了。
好了,废话不多说,下面的列表就给出了Mysql/SQLServer数据类型与java基本数据类型的对应,而且给出了用整型表示的列类型和列名。有了这张表,以后调用set方法就有据可循了:
****************************************************Mysql *******************************************
列 ClassName |
ColumnType |
DisplaySize |
TypeName |
0: java.lang.Integer |
ColumnType:4 |
11 |
INTEGER |
1: java.lang.Integer |
ColumnType:-6 |
4 |
TINYINT |
2: java.lang.String |
ColumnType:12 |
0 |
UNKNOWN |
3: java.lang.Boolean |
ColumnType:-7 |
1 |
TINYINT |
4: java.lang.Integer |
ColumnType:5 |
6 |
SMALLINT |
5: java.lang.Integer |
ColumnType:4 |
9 |
MEDIUMINT |
6: java.lang.Integer |
ColumnType:4 |
11 |
INTEGER |
7: java.lang.Long |
ColumnType:-5 |
20 |
BIGINT |
8: java.lang.Double |
ColumnType:8 |
22 |
DOUBLE |
9: java.lang.Double |
ColumnType:8 |
22 |
DOUBLE |
10: java.lang.Float |
ColumnType:7 |
12 |
FLOAT |
11: java.lang.String |
ColumnType:12 |
11 |
UNKNOWN |
12: java.lang.String |
ColumnType:12 |
11 |
UNKNOWN |
13: java.lang.String |
ColumnType:1 |
300 |
CHAR |
14: java.lang.String |
ColumnType:12 |
300 |
VARCHAR |
15: java.sql.Date |
ColumnType:91 |
10 |
DATE |
16: java.sql.Time |
ColumnType:92 |
8 |
TIME |
17: java.sql.Date |
ColumnType:91 |
4 |
YEAR |
18: java.sql.Timestamp |
ColumnType:93 |
19 |
TIMESTAMP |
19: java.sql.Timestamp |
ColumnType:93 |
19 |
DATETIME |
20: [B |
ColumnType:-3 |
255 |
TINYBLOB |
21: [B |
ColumnType:-4 |
65535 |
BLOB |
22: [B |
ColumnType:-4 |
16777215 |
MEDIUMBLOB |
23: [B |
ColumnType:-4 |
-1 |
BLOB |
24: java.lang.String |
ColumnType:12 |
255 |
TINYBLOB |
25: java.lang.String |
ColumnType:-1 |
65535 |
TEXT |
26: java.lang.String |
ColumnType:-1 |
16777215 |
MEDIUMBLOB |
27: java.lang.String |
ColumnType:-1 |
-1 |
TEXT |
28: java.lang.String |
ColumnType:1 |
3 |
CHAR |
29: java.lang.String |
ColumnType:1 |
3 |
CHAR |
****************************************************MSSQL*******************************************
列 ClassName |
ColumnType |
DisplaySize |
TYPENAME |
0: java.lang.Integer |
ColumnType:4 |
11 |
INT IDENTITY |
1: java.lang.Long |
ColumnType:-5 |
20 |
BIGINT |
2: byte[] |
ColumnType:-2 |
100 |
BINARY |
3: java.lang.Boolean |
ColumnType:-7 |
1 |
BIT |
4: java.lang.String |
ColumnType:1 |
10 |
CHAR |
5: java.sql.Timestamp |
ColumnType:93 |
23 |
DATETIME |
6: java.sql.Timestamp |
ColumnType:93 |
23 |
DATETIME |
7: java.math.BigDecimal |
ColumnType:3 |
20 |
DECIMAL |
8: java.lang.Double |
ColumnType:6 |
22 |
FLOAT |
9: byte[] |
ColumnType:-4 |
2147483647 |
IMAGE |
10:java.math.BigDecimal |
ColumnType:3 |
21 |
MONEY |
11: java.lang.String |
ColumnType:1 |
10 |
NCHAR |
12: java.lang.String |
ColumnType:-1 |
1073741823 |
NTEXT |
13:java.math.BigDecimal |
ColumnType:2 |
20 |
NUMERIC |
14: java.lang.String |
ColumnType:12 |
50 |
NVARCHAR |
15: java.lang.Float |
ColumnType:7 |
13 |
REAL |
16: java.sql.Timestamp |
ColumnType:93 |
16 |
SMALLDATETIME |
17: java.lang.Integer |
ColumnType:5 |
6 |
SMALLINT |
18:java.math.BigDecimal |
ColumnType:3 |
12 |
SMALLMONEY |
19: java.lang.String |
ColumnType:12 |
8000 |
SQL_VARIANT |
20: java.lang.String |
ColumnType:-1 |
2147483647 |
TEXT |
21: byte[] |
ColumnType:-2 |
16 |
TIMESTAMP |
22: java.lang.Integer |
ColumnType:-6 |
3 |
TINYINT |
23: java.lang.String |
ColumnType:1 |
36 |
UNIQUEIDENTIFIER |
24: byte[] |
ColumnType:-3 |
100 |
VARBINARY |
25: java.lang.String |
ColumnType:12 |
50 |
VARCHAR |