精华内容
下载资源
问答
  • 数据库bigint提取成实体对象

    千次阅读 2017-10-11 14:20:50
    Mysql里有个数据类型bigint 在java转换成实体对象时,处理不当容易出现以下异常: java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigInteger 只需要注意以下情况,就可避免此类异常...

    Mysql里有个数据类型bigint
    在java转换成实体对象时,处理不当容易出现以下异常:
    java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigInteger

    只需要注意以下情况,就可避免此类异常:
    当数据库中该属性添加unsigned,则在对象中对应的属性类型应该为BigInteger;
    当数据库中该属性未添加unsigned,则在对象中对应的属性类型应该为Long。

    展开全文
  • mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突   实体Bean public class Broke { /** * brokeid */ BigInteger brokeid; /** * 节点id 与 节点id为多对一的关系 */ ...

    mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突

     

    实体Bean

    public class Broke {
    	/**
    	 * brokeid 
    	 */
    	BigInteger brokeid;
    	/**
    	 * 节点id 与 节点id为多对一的关系
    	 */
    	String nodeid;
    	/**
    	 * brokeip
    	 */
    	String brokeip;
    	/**
    	 * 删除标记   0--notdelete   1--delete  (0 is default)
    	 */
    	int deleteflag = 0;
    }

     brokeid为BigInteger类型, 在mysql数据库中brokeid同样也为BigInteger类型,看起来如果在数据库中查找相关Broke实体应该没有什么问题,然而在查找出resultSet结果进行反射时,却抛出了argument type mismatch的错误信息。。下面看反射代码。。

    public static <T> List<T> getObjectsList(ResultSet rs, Class<T> k)
    			throws SQLException {
    		List<T> bl = new ArrayList<T>();
    		if (rs != null) {
    			while (rs.next()) {
    				T o = null;
    				try {
    					o = k.newInstance();
    					for (Method m : k.getDeclaredMethods()) {
    						String name = m.getName();
    						if (name.startsWith("set")) {
    //							System.out.println(rs.getObject(name.substring(3)).getClass().getName());
    							m.invoke(o, rs.getObject(name.substring(3)));
    						}
    					}
    					bl.add(o);
    				} catch (InstantiationException e) {
    					e.printStackTrace();
    				} catch (IllegalAccessException e) {
    					e.printStackTrace();
    				} catch (IllegalArgumentException e) {
    					e.printStackTrace();
    				} catch (InvocationTargetException e) {
    					e.printStackTrace();
    				}
    			}
    			return bl;
    		}
    		return null;
    	}

     当程序运行时,将反射执行到Brokeid时,就会在红色程序部分抛出argument type mismatch的异常信息,打印出程序中注释掉的那句输出语句时,便可以判断出,此时,从resultSet对象中取出的object对象为Long类型。之后,将Broke实体中brokeid的数据类型改为Long即可。

      在测试之后,发现改为Long类型之后,并不影响Broke对象的插入和其他一些相关操作。  而原先的BigInteger数据类型在添加实体的时候是可以的,但是在rs.getObject时,就会发生类型不匹配的错误。。

     

    展开全文
  • SQLite数据库BigINT类型日期数据查询

    千次阅读 2018-07-04 16:25:54
    在创建SQLite数据库连接实例时,如果我们将storeDateTimeAsTicks参数设置为true: /// /// 创建SQLite连接 /// .db文件不存在时创建,存在时读写,日期类型存为ticks /// /// <param name="sDbPath">.db文件...

    定义了一个结构,包含一个DateTime类型的属性:

    private DateTime _FromTime = DateTime.Now;

    在创建SQLite数据库连接实例时,如果我们将storeDateTimeAsTicks参数设置为true:

            /// <summary>
            /// 创建SQLite连接
            /// .db文件不存在时创建,存在时读写,日期类型存为ticks
            /// </summary>
            /// <param name="sDbPath">.db文件路径</param>
            /// <returns>数据库的连接</returns>
            public static SDNConn CreateInstance(string sDbPath)
            {
                return new SDNConn() { Connection = new SQLite.SQLiteConnection(sDbPath, SQLite.SQLiteOpenFlags.ReadWrite | SQLite.SQLiteOpenFlags.Create | SQLite.SQLiteOpenFlags.SharedCache, true) };
            }

        /// <summary>
        /// Constructs a new SQLiteConnection and opens a SQLite database specified by databasePath.
        /// </summary>
        /// <param name="databasePath">
        /// Specifies the path to the database file.
        /// </param>
        /// <param name="openFlags">
        /// Flags controlling how the connection should be opened.
        /// </param>
        /// <param name="storeDateTimeAsTicks">
        /// Specifies whether to store DateTime properties as ticks (true) or strings (false). You
        /// absolutely do want to store them as Ticks in all new projects. The value of false is
        /// only here for backwards compatibility. There is a *significant* speed advantage, with no
        /// down sides, when setting storeDateTimeAsTicks = true.
        /// If you use DateTimeOffset properties, it will be always stored as ticks regardingless
        /// the storeDateTimeAsTicks parameter.
        /// </param>
        public SQLiteConnection(string databasePath, SQLiteOpenFlags openFlags, bool storeDateTimeAsTicks = true)
        {
          if (string.IsNullOrEmpty(databasePath))
            throw new ArgumentException("Must be specified", nameof (databasePath));
          this.DatabasePath = databasePath;
          sqlite3 db;
          SQLite3.Result r = SQLite3.Open(databasePath, out db, (int) openFlags, IntPtr.Zero);
          this.Handle = db;
          if (r != SQLite3.Result.OK)
            throw SQLiteException.New(r, string.Format("Could not open database file: {0} ({1})", new object[2]
            {
              (object) this.DatabasePath,
              (object) r
            }));
          this._open = true;
          this.StoreDateTimeAsTicks = storeDateTimeAsTicks;
          this.BusyTimeout = TimeSpan.FromSeconds(0.1);
          this.Tracer = (Action<string>) (line => {});
        }

    则在创建SQLite数据表时,日期类型将自动保存为BIGINT类型:

    CREATE TABLE [PictureMetadata](
      [OperatorType] integer, 
      [Person] varchar, 
      [FromTime] BIGINT, 
      [ToTime] bigint, 
      [Path] varchar, 
      [GlobalID] varchar PRIMARY KEY NOT NULL, 
      [TaskID] varchar, 
      [TaskID2] varchar, 
      [ResourceType] integer, 
      [ResourceGID] varchar, 
      [SourcePath] varchar);

    在进行查询时,我们采用如下如下语句:

    select datetime(FromTime/10000000 - 62135596800, 'unixepoch') mytime from PictureMetadata

    结果中的BIGINT型数据 636652579650855945 将被格式化为 2018-06-22 09:52:45 。

    那么问题来了,我们存入的时间数据 2018-06-22 09:52:45 是怎样被保存 636652579650855945 的呢?

    首先我们需要明白,时间戳 unixepoch 表示返回的是国际协调时间UTC,该时间采用的是格列高利历Gregorian Calendar(标准阳历)基准,并将返回日期解释为UNIX时间,即自1970-01-01以来的秒数。

    我们在查询秒数时,采用如下语句:

    SELECT strftime('%s','2018-06-22 09:52:45')+62135596800 AS ticks;

    与采用如下语句:

    SELECT (((JulianDay('2018-06-22 09:52:45') - 2440587.5)*86400.0) + 62135596800) AS ticks

    将会得到相同的结果,即 63665257965。

    这两种查询方式,得到的都是标准阳历以来的秒数。

    按标准阳历,自公元0001-01-01至1970-01-01之间的1969年中,有477年是闰年,则这期间的时间为:1969*365+477=719162天=62135596800秒。于是,我们要保存的时间 2018-06-22 09:52:45 相较 1970-01-01 是 1529661165 秒,加 62135596800 后为 63665257965 ,即JulianDay的时间。

    这个时间的单位是秒。UTC采用的国际原子时的准确度为每日数纳秒(一秒的十亿分之一),我们将秒转化成100纳秒为单位,则须乘以一千万即10000000,得到 636652579650000000 。

    这是一种精确到纳秒的算法。另外,我们还可以先计算当前时间距离标准阳历 0001-01-01 以来的天数(包含小数),然后转化成以100纳秒为单位的数,得 636652579650855945 。

    展开全文
  • bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。 int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)...

    bigint

    从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。

    int

    从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer

    smallint

    从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。

    tinyint

    从 0 到 255 的整型数据。存储大小为 1 字节。

    说明:

    int(M) 在 integer 数据类型中,M 表示最大显示宽度,只用于在显示,并不影响存储。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。

    展开全文
  • 下表,如何查询time的最大值? hql如何写? create table _MaterialLoad( id int IDENTITY(1,1) primary key not null, mateCode char(12) not null, ... time bigint not null )
  • @JsonSerialize(using= ToStringSerializer.class) @TableId(value = "id",type = IdType.ID_WORKER) private Long id;
  • mysql数据库字段bigint使用

    千次阅读 2018-11-23 14:21:00
    Mysql里有个数据类型bigint 在java转换成实体对象时,处理不当容易出现以下异常: java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigInteger 只需要注意以下情况,就可避免此类异常:...
  • Mysql数据库Bigint字段值溢出问题

    千次阅读 2018-12-08 14:33:51
    在java程序中我的值是BigInteger类型的,数据库存放的字段也是bigint类型,这个按道理是可以存放的,百思不得其解,一直在原因。后面发现是数据库字段设置问题,即字段的有无符号问题。 unsigned 既为非负数,用此...
  • mysql数据库BIGINT转换成日期

    千次阅读 2016-05-03 17:15:38
    -- 假设 1164691264437 是 Java 里的“日期时间”:即:自1970-01-01 00:00:00以来的毫秒数 mysql> select from_unixtime(1164691264437/1000); +-----------------------------------+ | from_unixtime...
  • oracle中数据类型为integer,查询出来绑定到DBGrid后,直接overflow while converting variant of type(decimal) into type (currency) 应该怎么取出来,并转成string
  • #define OTL_BIGINT long long #define OTL_STR_TO_BIGINT(str,n) \ { \ n=atoll(str); \ } #define OTL_BIGINT_TO_STR(n,str) \ { \ sprintf(str,"%lld", n); \ } #include "otlv4.h"// include the
  • #define OTL_BIGINT long long #define OTL_STR_TO_BIGINT(str,n) \ { \ n=atoll(str); \ } #define OTL_BIGINT_TO_STR(n,str) \ { \ sprintf(str,"%lld", n); \ } #include "otlv4.h"// include...
  • bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。 int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字...
  • mysql数据库BIGINT转换成一个日期

    千次阅读 2011-03-21 20:38:00
    -- 假设 1164691264437 是 Java 里的“日期时间”:即:自1970-01-01 00:00:00以来的毫秒数 /* getTime public long getTime()Returns the number of milliseconds since January 1, 1970, 00:...
  • 1.区别: int数据类型所表示的数值范围从-2^31到2^31-1,也就是说,你可以用int数据类型来表达-2,147,483,648...而bigint可以精确的表示从-2^63到2^63-1(即从-9,223,372,036,854,775,808到 9,223,372,036,854,775,80...
  • 1.BIGINT 字面意思大的整型数据,bigint 带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。 2.VARCHAR VARCHAR是比char更灵活的数据类型,比如说char(10),...
  • 关于数据库中的BigInt的映射问题

    千次阅读 2015-10-12 16:17:52
    通过Hibernate的HQL语句查询的,查询出来的字段数据类型和实体的字段数据类型保持一致。通过Hibernate的Sql语句查询的,查询出来的字段如果是BigInt,则对应的Java类型是BigInteger
  • jeesite数据库主键id改为bigint

    千次阅读 2018-08-07 09:23:08
    最近在要jeesite开发时,发现数据库id是...思路是:之前的实体类id字段保持不便String,在mybatis层参数解析,生成sql时,将string类型的id转化为数据类型的bigint,这样可利用数据库的自增特性,数据的可读性,也可...
  • 数据库中取出BigInt转Long出现异常 在某些业务逻辑中,可能只需要筛选出需要的某一列数据即可,使用 List 去接 查询出来的单列结果。 使用forEach去遍历时,Long id 出现错误。 取出来的数据只能用下标 i 去遍历个...
  • 如何处理数据库字段是bigint型?

    千次阅读 2006-10-10 22:37:00
    数据库字段ID是bigint型,在执行某个存储过程后,其中存储过程SQL是这样的:select ID,………… 在程序中声明了变量是int型,在执行存储过程后,以下情况是会抛出异常的:1、obj.ID = dr.IsDBNull(0) ? 0 : dr....
  • bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。 int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)...
  • JSP程序 如何定义数据库类型为bigint的字段 为int型 悬赏分:20 - 解决时间:2007-4-6 08:55Integer i = (Integer)resultSet.getObject(i); getObject(i)的这个i的类型为int类型,但程序需要设置i为bigint类型,那...
  • mysql数据库时间类型datetime、bigint、timestamp的查询效率比较
  • 今天在写linq 语句的时候,遇到了这个问题。调试,报错。我一直不知道还有这样的事情。感觉自己太差劲了。哈哈。 var list = dt.AsEnumerable().Select(c...因为字段RequestCancelID在数据库中我用的类型是bigint. 
  • 最近使用MySQL数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint。其中比较迷惑的是int和smallint的差别。今天就在网上仔细找了找,找到如下内容,留档做个总结: 使用整数数据的精确数字数据...
  • 之前用的uuid都是32位的varchar类型,这次要求插入的uuid为20位bigint类型 之前的uuid生成方式 @SelectKey(keyProperty = "id",resultType = String.class, before = true, statement = "select replace(uuid...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,195
精华内容 1,278
关键字:

数据库bigint