【发布时间】:2013-02-07 01:51:38
【问题描述】:
我正在编写一个允许用户将他们的数据存储在我的数据库中的方法。
我遇到的问题是在我的数据库中存储一个数字数据类型,用于用户 ID。
首先,如何判断 ID 号是否自动递增?这些是它的属性:
Type: Numeric
Column size: 4
Decimal digits: 0
Part of primary key: true
Part of an index: true
Position: 1
我确定我在某处读到过,将其设置为索引的一部分 (true) 允许自动递增。谁能确认一下?
更重要的是,在我的表中插入数据时,我收到一条错误消息:
Columns of type 'NUMERIC' cannot hold values of type 'CHAR'.
这是我的插入代码的 sn-p(如果需要,我可以透露更多):
Statement pStatement = conn.createStatement();
String selectSQL = ("INSERT INTO APP.PERSON VALUES ('" + '3' + "','" + user + "','" + pass + "','" + fName + "','" + sName + "','" + sQuestion + "','" + sAnswer + "') ");
pStatement.executeUpdate(selectSQL);
如您所见,我将 ID(第一个值)手动设置为 3。我相信这会引发错误,并且想知道如何使用 INSERT 命令插入数值。
我在 Mac OS X Mountain Lion 上使用 Netbeans 7.3 Beta 2 编写 Java 代码。我正在使用 Derby 数据库。
【问题讨论】:
-
使用占位符:稍后你会感谢我的。但是,正如错误消息所述,其中一列包含无效值 - 例如,javadb 会将
'3'转换为3吗?我知道 SQL Server 会,但是.. 另外,为了让生活更简单,请确保在INSERT上包含列名。 -
我会研究占位符的,谢谢。我有另一种方法以不同的方式做同样的事情,我相信我在那里使用占位符 - 虽然我不知道它们是什么,但我假设。我的编程知识并不惊人!我应该提到,我尝试了“3”-“3”和 3。它们都不起作用。
-
这可能是一个完全不同的列 - 使用列名,例如
INSERT INTO t (N1, N2) VALUES (V1, V2)可以帮助“澄清”哪些值映射到哪些列。使用 [typed] 占位符进一步说明/加强了此说明,以便可以从上(表)到下(Java)快速直观地验证整个签名。 -
有道理 - 我有更多代码要实现!谢谢。