早上写了篇博客,发现蛮有感觉的,工作了一整天,发现又有些东西可以写了,呵呵…… 分享下…… 
经过几天的Dao层和Service层代码的编写,今天终于到了看成果的时候了,把项目启动后,输入一个Url访问项目接口。糟糕,报错,没事,Dao层的错误,没问题,就是SQL的问题。说明下,我们公司操作数据库是用jdbc的,所有比较麻烦,但是效率相对来说是蛮高的。
但是,我仔细对比了代码,没发现问题了,但总是抱 “Statement parameter 13 not set.” 错误。
没办法,只能一步一步的找咯。我把Sql语句和各个参数都打印出来。然后放到SQLyog里去执行。没问题额。
我把tomcat在次启动,访问接口,还是抱 “Statement parameter 13 not set.” 错误。我在仔细看了下,不会是关键字的问题了吧?唉…… 试下呗,Pass 。哦,我焕然大雾,原来是类型不匹配,Java是short类型,mysql是tinyint类型。
下面是我从网上找来的Java基本数据类型和mysql基本数据类型对照表:
| BIT(1) (new in MySQL-5.0) | BIT | java.lang.Boolean |
| BIT( > 1) (new in MySQL-5.0) | BIT | byte[] |
| TINYINT | TINYINT | java.lang.Boolean if the configuration property
tinyInt1isBit is set to
true (the default) and the storage size is 1, or
java.lang.Integer if not. |
| BOOL, BOOLEAN | TINYINT | See TINYINT, above as these are aliases for TINYINT(1), currently. |
| SMALLINT[(M)] [UNSIGNED] | SMALLINT [UNSIGNED] | java.lang.Integer (regardless if UNSIGNED or not) |
| MEDIUMINT[(M)] [UNSIGNED] | MEDIUMINT [UNSIGNED] | java.lang.Integer, if UNSIGNED
java.lang.Long (C/J 3.1 and earlier), or
java.lang.Integer for C/J 5.0 and later |
| INT,INTEGER[(M)] [UNSIGNED] | INTEGER [UNSIGNED] | java.lang.Integer, if UNSIGNED
java.lang.Long |
| BIGINT[(M)] [UNSIGNED] | BIGINT [UNSIGNED] | java.lang.Long, if UNSIGNED
java.math.BigInteger |
| FLOAT[(M,D)] | FLOAT | java.lang.Float |
| DOUBLE[(M,B)] | DOUBLE | java.lang.Double |
| DECIMAL[(M[,D])] | DECIMAL | java.math.BigDecimal |
| DATE | DATE | java.sql.Date |
| DATETIME | DATETIME | java.sql.Timestamp |
| TIMESTAMP[(M)] | TIMESTAMP | java.sql.Timestamp |
| TIME | TIME | java.sql.Time |
| YEAR[(2|4)] | YEAR | If yearIsDateType configuration property is set to false, then the returned object type is
java.sql.Short. If set to true (the default) then an object of type
java.sql.Date (with the date set to January 1st, at midnight). |
| CHAR(M) | CHAR | java.lang.String (unless the character set for the column is
BINARY, then byte[] is returned. |
| VARCHAR(M) [BINARY] | VARCHAR | java.lang.String (unless the character set for the column is
BINARY, then byte[] is returned. |
| BINARY(M) | BINARY | byte[] |
| VARBINARY(M) | VARBINARY | byte[] |
| TINYBLOB | TINYBLOB | byte[] |
| TINYTEXT | VARCHAR | java.lang.String |
| BLOB | BLOB | byte[] |
| TEXT | VARCHAR | java.lang.String |
| MEDIUMBLOB | MEDIUMBLOB | byte[] |
| MEDIUMTEXT | VARCHAR | java.lang.String |
| LONGBLOB | LONGBLOB | byte[] |
| LONGTEXT | VARCHAR | java.lang.String |
| ENUM('value1','value2',...) | CHAR | java.lang.String |
| SET('value1','value2',...) | CHAR | java.lang.String |