关于JDBC连接SQL Server的2个问题

szn 2007-06-08 01:33:21
以下2个问题我都google过了,可是没找到结果,希望大家能够帮帮忙,在此先表示感谢。

1、当某张表的字段是bigint时,对这张表进行查询就会失败,信息为[Microsoft][SQL JDBC Driver]Unhandled data type: TDS_INTS。而把字段换成int型却没有问题,java中的变量也是设的long类型。

2、如果某张表的主键设置为uniqueidentifier,如何对其进行查询操作?我试过将其转换为string类型,但是转换失败。

...全文
285 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
真的很小奚 2007-06-19
  • 打赏
  • 举报
回复
没有遇见过这2问题 关注ING
szn 2007-06-19
  • 打赏
  • 举报
回复
进来个人接分把……
wf100200 2007-06-19
  • 打赏
  • 举报
回复
【转】
使用 uniqueidentifier 数据

uniqueidentifier 数据类型可存储 16 字节的二进制值,其作用与全局唯一标识符 (GUID) 一样。GUID 是唯一的二进制数;世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络中,分配必须具有唯一性的标识符。

uniqueidentifier 列的 GUID 值通常由以下方式获得:

在 Transact-SQL 语句、批处理或脚本中调用 NEWID 函数。

在应用程序代码中,调用返回 GUID 的应用程序 API 函数或方法。

Transact-SQL NEWID 函数以及应用程序 API 函数和方法用它们的网卡的标识号加上 CPU 时钟的唯一编号来生成新的 uniqueidentifier 值。每个网卡都有唯一的标识号。由 NEWID 返回的 uniqueidentifier 是用服务器上的网卡生成的。由应用程序 API 函数和方法返回的 uniqueidentifier 则是用客户端上的网卡生成的。

通常不将 uniqueidentifier 定义为常量,因为很难保证创建的 uniqueidentifier 确实具有唯一性。指定 uniqueidentifier 常量的方法有两种:

字符串格式

'6F9619FF-8B86-D011-B42D-00C04FC964FF'

二进制格式

0xff19966f868b11d0b42d00c04fc964ff

uniqueidentifier 数据类型不象 IDENTITY 属性那样为插入的行自动生成新的 ID。若要得到新的 uniqueidentifier 值,表必须具有一个指定 NEWID 函数的 DEFAULT 子句,或使用 NEWID 函数的 INSERT 语句:

CREATE TABLE MyUniqueTable
(UniqueColumn UNIQUEIDENTIFIER DEFAULT NEWID(),
Characters VARCHAR(10) )
GO
INSERT INTO MyUniqueTable(Characters) VALUES ('abc')
INSERT INTO MyUniqueTable VALUES (NEWID(), 'def')
GO

uniqueidentifier 列中可以多次出现某个 uniqueidentifier 值,除非对该列也指定了 UNIQUE 或 PRIMARY KEY 约束。当源表中有多行引用同一主键时,引用其他表的 uniqueidentifier 主键的外键列将多次出现某个 uniqueidentifier 值。

一个表可以有多个 uniqueidentifier 列。每个表中可以指定一个具有 ROWGUIDCOL 属性的 uniqueidentifier 列。ROWGUIDCOL 属性指明此列的 uniqueidentifier 值可唯一地标识表中的行。但是,该属性并不强制执行该唯一性。唯一性必须通过其他机制来执行,比如为列指定 PRIMARY KEY 约束。ROWGUIDCOL 属性主要用于 Microsoft SQL Server 2005 复制。带有更新订阅的合并复制和事务复制使用 uniqueidentifier 列来确保在表的多个副本中唯一地标识行。

uniqueidentifier 数据类型的主要优点是保证由 Transact-SQL NEWID 函数或应用程序 GUID 函数生成的值在全球是唯一的。

uniqueidentifier 数据类型具有几个缺点:

值长且难懂。这使用户难以正确键入它们,并且更难记住。

这些值是随机的,而且它们不支持任何使其对用户更有意义的模式。

也没有任何方式可以决定生成 uniqueidentifier 值的顺序。它们不适用于那些依赖递增的键值的现有应用程序。

uniqueidentifier 数据类型具有 16 个字节,与其他诸如 4 字节的整数相比要大一些。这意味着使用 uniqueidentifier 键生成的索引可能会比使用 int 键实现的索引相对慢一些。

如果全局唯一性并不是必须的,或者需要一个连续递增的键,则可以考虑使用 IDENTITY 属性。

wf100200 2007-06-19
  • 打赏
  • 举报
回复
java中的变量也是设的long类型 换成Long试试
jrxqz 2007-06-19
  • 打赏
  • 举报
回复
用net的那个驱动试试,别用com的那个~
szn 2007-06-09
  • 打赏
  • 举报
回复
没有人知道吗?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧