MysqlDefs.java
上传用户:sxlinghang
上传日期:2022-07-20
资源大小:1405k
文件大小:9k
源码类别:

数据库编程

开发平台:

Java

  1. /*
  2.    Copyright (C) 2002 MySQL AB
  3.       This program is free software; you can redistribute it and/or modify
  4.       it under the terms of the GNU General Public License as published by
  5.       the Free Software Foundation; either version 2 of the License, or
  6.       (at your option) any later version.
  7.       This program is distributed in the hope that it will be useful,
  8.       but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10.       GNU General Public License for more details.
  11.       You should have received a copy of the GNU General Public License
  12.       along with this program; if not, write to the Free Software
  13.       Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  14.  */
  15. package com.mysql.jdbc;
  16. import java.sql.Types;
  17. /**
  18.  * MysqlDefs contains many values that are needed for communication
  19.  * with the MySQL server.
  20.  *
  21.  * @author Mark Matthews
  22.  * @version $Id: MysqlDefs.java,v 1.6.2.6 2003/11/20 19:43:45 mmatthew Exp $
  23.  */
  24. final class MysqlDefs {
  25.     //
  26.     // Constants defined from mysql
  27.     //
  28.     // DB Operations
  29.     static final int SLEEP = 0;
  30.     static final int QUIT = 1;
  31.     static final int INIT_DB = 2;
  32.     static final int QUERY = 3;
  33.     static final int FIELD_LIST = 4;
  34.     static final int CREATE_DB = 5;
  35.     static final int DROP_DB = 6;
  36.     static final int RELOAD = 7;
  37.     static final int SHUTDOWN = 8;
  38.     static final int STATISTICS = 9;
  39.     static final int PROCESS_INFO = 10;
  40.     static final int CONNECT = 11;
  41.     static final int PROCESS_KILL = 12;
  42.     static final int DEBUG = 13;
  43.     static final int PING = 14;
  44.     static final int TIME = 15;
  45.     static final int DELAYED_INSERT = 16;
  46.     static final int CHANGE_USER = 17;
  47.     static final int COM_BINLOG_DUMP = 18;
  48.     static final int COM_TABLE_DUMP = 19;
  49.     static final int COM_CONNECT_OUT = 20;
  50.     static final int COM_REGISTER_SLAVE = 21;
  51.     static final int COM_PREPARE = 22;
  52.     static final int COM_EXECUTE = 23;
  53.     static final int COM_LONG_DATA = 24;
  54.     // Data Types
  55.     static final int FIELD_TYPE_DECIMAL = 0;
  56.     static final int FIELD_TYPE_TINY = 1;
  57.     static final int FIELD_TYPE_SHORT = 2;
  58.     static final int FIELD_TYPE_LONG = 3;
  59.     static final int FIELD_TYPE_FLOAT = 4;
  60.     static final int FIELD_TYPE_DOUBLE = 5;
  61.     static final int FIELD_TYPE_NULL = 6;
  62.     static final int FIELD_TYPE_TIMESTAMP = 7;
  63.     static final int FIELD_TYPE_LONGLONG = 8;
  64.     static final int FIELD_TYPE_INT24 = 9;
  65.     static final int FIELD_TYPE_DATE = 10;
  66.     static final int FIELD_TYPE_TIME = 11;
  67.     static final int FIELD_TYPE_DATETIME = 12;
  68.     // Newer data types
  69.     static final int FIELD_TYPE_YEAR = 13;
  70.     static final int FIELD_TYPE_NEWDATE = 14;
  71.     static final int FIELD_TYPE_ENUM = 247;
  72.     static final int FIELD_TYPE_SET = 248;
  73.     // Older data types
  74.     static final int FIELD_TYPE_TINY_BLOB = 249;
  75.     static final int FIELD_TYPE_MEDIUM_BLOB = 250;
  76.     static final int FIELD_TYPE_LONG_BLOB = 251;
  77.     static final int FIELD_TYPE_BLOB = 252;
  78.     static final int FIELD_TYPE_VAR_STRING = 253;
  79.     static final int FIELD_TYPE_STRING = 254;
  80.     static final int ER_WARNING_NOT_COMPLETE_ROLLBACK = 1196;
  81.     // Limitations
  82.     static final int MAX_ROWS = 50000000; // From the MySQL FAQ
  83.     
  84. static final String MIN_DOUBLE_VAL_STRING =  "-1.7976931348623157E+308";
  85. static final String MAX_DOUBLE_VAL_STRING = "1.7976931348623157E+308";
  86.     static final String MIN_FLOAT_VAL_STRING = "-3.402823466E+38";
  87.     static final String MAX_FLOAT_VAL_STRING = "3.402823466E+38";
  88.     static final String NAN_VAL_STRING = "0";
  89.         
  90.     /**
  91.      * Maps the given MySQL type to the correct JDBC type.
  92.      */
  93.     static int mysqlToJavaType(int mysqlType) {
  94.         int jdbcType;
  95.         switch (mysqlType) {
  96.         case MysqlDefs.FIELD_TYPE_DECIMAL:
  97.             jdbcType = Types.DECIMAL;
  98.             break;
  99.         case MysqlDefs.FIELD_TYPE_TINY:
  100.             jdbcType = Types.TINYINT;
  101.             break;
  102.         case MysqlDefs.FIELD_TYPE_SHORT:
  103.             jdbcType = Types.SMALLINT;
  104.             break;
  105.         case MysqlDefs.FIELD_TYPE_LONG:
  106.             jdbcType = Types.INTEGER;
  107.             break;
  108.         case MysqlDefs.FIELD_TYPE_FLOAT:
  109.             jdbcType = Types.REAL;
  110.             break;
  111.         case MysqlDefs.FIELD_TYPE_DOUBLE:
  112.             jdbcType = Types.DOUBLE;
  113.             break;
  114.         case MysqlDefs.FIELD_TYPE_NULL:
  115.             jdbcType = Types.NULL;
  116.             break;
  117.         case MysqlDefs.FIELD_TYPE_TIMESTAMP:
  118.             jdbcType = Types.TIMESTAMP;
  119.             break;
  120.         case MysqlDefs.FIELD_TYPE_LONGLONG:
  121.             jdbcType = Types.BIGINT;
  122.             break;
  123.         case MysqlDefs.FIELD_TYPE_INT24:
  124.             jdbcType = Types.INTEGER;
  125.             break;
  126.         case MysqlDefs.FIELD_TYPE_DATE:
  127.             jdbcType = Types.DATE;
  128.             break;
  129.         case MysqlDefs.FIELD_TYPE_TIME:
  130.             jdbcType = Types.TIME;
  131.             break;
  132.         case MysqlDefs.FIELD_TYPE_DATETIME:
  133.             jdbcType = Types.TIMESTAMP;
  134.             break;
  135.         case MysqlDefs.FIELD_TYPE_YEAR:
  136.             jdbcType = Types.DATE;
  137.             break;
  138.         case MysqlDefs.FIELD_TYPE_NEWDATE:
  139.             jdbcType = Types.DATE;
  140.             break;
  141.         case MysqlDefs.FIELD_TYPE_ENUM:
  142.             jdbcType = Types.CHAR;
  143.             break;
  144.         case MysqlDefs.FIELD_TYPE_SET:
  145.             jdbcType = Types.CHAR;
  146.             break;
  147.         case MysqlDefs.FIELD_TYPE_TINY_BLOB:
  148.             jdbcType = Types.VARBINARY;
  149.             break;
  150.         case MysqlDefs.FIELD_TYPE_MEDIUM_BLOB:
  151.             jdbcType = Types.LONGVARBINARY;
  152.             break;
  153.         case MysqlDefs.FIELD_TYPE_LONG_BLOB:
  154.             jdbcType = Types.LONGVARBINARY;
  155.             break;
  156.         case MysqlDefs.FIELD_TYPE_BLOB:
  157.             jdbcType = Types.LONGVARBINARY;
  158.             break;
  159.         case MysqlDefs.FIELD_TYPE_VAR_STRING:
  160.             jdbcType = Types.VARCHAR;
  161.             break;
  162.         case MysqlDefs.FIELD_TYPE_STRING:
  163.             jdbcType = Types.CHAR;
  164.             break;
  165.         default:
  166.             jdbcType = Types.VARCHAR;
  167.         }
  168.         return jdbcType;
  169.     }
  170.     /**
  171.      * Maps the given MySQL type to the correct JDBC type.
  172.      */
  173.     static int mysqlToJavaType(String mysqlType) {
  174.         if (mysqlType.equalsIgnoreCase("TINYINT")) {
  175.             return java.sql.Types.TINYINT;
  176.         } else if (mysqlType.equalsIgnoreCase("SMALLINT")) {
  177.             return java.sql.Types.SMALLINT;
  178.         } else if (mysqlType.equalsIgnoreCase("MEDIUMINT")) {
  179.             return java.sql.Types.SMALLINT;
  180.         } else if (mysqlType.equalsIgnoreCase("INT")) {
  181.             return java.sql.Types.INTEGER;
  182.         } else if (mysqlType.equalsIgnoreCase("INTEGER")) {
  183.             return java.sql.Types.INTEGER;
  184.         } else if (mysqlType.equalsIgnoreCase("BIGINT")) {
  185.             return java.sql.Types.BIGINT;
  186.         } else if (mysqlType.equalsIgnoreCase("INT24")) {
  187.             return java.sql.Types.BIGINT;
  188.         } else if (mysqlType.equalsIgnoreCase("REAL")) {
  189.             return java.sql.Types.REAL;
  190.         } else if (mysqlType.equalsIgnoreCase("FLOAT")) {
  191.             return java.sql.Types.FLOAT;
  192.         } else if (mysqlType.equalsIgnoreCase("DECIMAL")) {
  193.             return java.sql.Types.DECIMAL;
  194.         } else if (mysqlType.equalsIgnoreCase("NUMERIC")) {
  195.             return java.sql.Types.NUMERIC;
  196.         } else if (mysqlType.equalsIgnoreCase("DOUBLE")) {
  197.             return java.sql.Types.DOUBLE;
  198.         } else if (mysqlType.equalsIgnoreCase("CHAR")) {
  199.             return java.sql.Types.CHAR;
  200.         } else if (mysqlType.equalsIgnoreCase("VARCHAR")) {
  201.             return java.sql.Types.VARCHAR;
  202.         } else if (mysqlType.equalsIgnoreCase("DATE")) {
  203.             return java.sql.Types.DATE;
  204.         } else if (mysqlType.equalsIgnoreCase("TIME")) {
  205.             return java.sql.Types.TIME;
  206.         } else if (mysqlType.equalsIgnoreCase("YEAR")) {
  207. return java.sql.Types.DATE;
  208. } else if (mysqlType.equalsIgnoreCase("TIMESTAMP")) {
  209.             return java.sql.Types.TIMESTAMP;
  210.         } else if (mysqlType.equalsIgnoreCase("DATETIME")) {
  211.             return java.sql.Types.TIMESTAMP;
  212.         } else if (mysqlType.equalsIgnoreCase("TINYBLOB")) {
  213.             return java.sql.Types.BINARY;
  214.         } else if (mysqlType.equalsIgnoreCase("BLOB")) {
  215.             return java.sql.Types.VARBINARY;
  216.         } else if (mysqlType.equalsIgnoreCase("MEDIUMBLOB")) {
  217.             return java.sql.Types.VARBINARY;
  218.         } else if (mysqlType.equalsIgnoreCase("LONGBLOB")) {
  219.             return java.sql.Types.LONGVARBINARY;
  220.         } else if (mysqlType.equalsIgnoreCase("TINYTEXT")) {
  221.             return java.sql.Types.VARCHAR;
  222.         } else if (mysqlType.equalsIgnoreCase("TEXT")) {
  223.             return java.sql.Types.LONGVARCHAR;
  224.         } else if (mysqlType.equalsIgnoreCase("MEDIUMTEXT")) {
  225.             return java.sql.Types.LONGVARCHAR;
  226.         }  else if (mysqlType.equalsIgnoreCase("LONGTEXT")) {
  227.          return java.sql.Types.LONGVARCHAR;
  228.         } else if (mysqlType.equalsIgnoreCase("ENUM")) {
  229.             return java.sql.Types.CHAR;
  230.         } else if (mysqlType.equalsIgnoreCase("SET")) {
  231.             return java.sql.Types.CHAR;
  232.         }
  233.         // Punt
  234.         return java.sql.Types.OTHER;
  235.     }
  236. }