2

我正在使用 jquery datables/jedtiable,它传回 ROW 和 COLUMN 编号以及要更新的新 VALUE,如下所示。这是 POST'ed 到另一个 JSP 页面,该页面具有到 sqlite DB 的 JDBC 连接。

注意:我不想指定列名,只是一个基于从我的其他页面发布的 int 的数字。希望这能让我的问题更清楚

行、值、列

2 没有 4

将“否”更新到第 2 行第 4 列的 SQL 是什么?

更新* ** * ** * **

这目前正在使用 rowid,但是我仍然希望能够按数字使用列。

     String value = request.getParameter("value");
     String row = request.getParameter("row_id");
     String column = request.getParameter("column");

UPDATE PROJECT SET DELIVERY_STREAM ='"+value+"' WHERE rowid = "+rowId+";
4

2 回答 2

1

所有 SQL 命令都需要列,而不是数字。

此外,SQL 表没有行号有意义的固有顺序。记录只能通过一些唯一的字段值来标识。

所以,严格来说,你的问题的答案是“不”。


要按数字访问列,您需要知道哪个列有哪个数字,以便您可以将数字映射回相应的名称:

String[] columnNames = new String[] {
    "NAME", "DELIVERY_STREAM", "NUMBER_OF_FEET", "RETICULATED", ...
};
int columnNumber = ...;

String sql = "UPDATE Project SET " + columnNames[columnNumber] + " = ? WHERE ...";

从行号映射到实际记录需要您在某处存储一个包含这些记录的键值的数组,但在使用多个 JSP 页面时这是不可行的。而不是行号,只需使用原始表中的一些键值(主键,或 SQLite 的rowid)来识别记录;这就是钥匙的用途。

于 2013-03-03T10:20:30.690 回答
0

让我们假设您的表中有一些唯一的订单字段 (ord_field)。然后你可以做一些接近这个的事情:

UPDATE table SET value ='some value'
FROM (
SELECT *, (select COUNT(0) 
            from table t1 
            where t2.ord_field <= t1.ord_field 
            ) AS ord
FROM table t2
ORDER BY ord_field ASC) a WHERE table.ord_field = a.ord_field AND a.ord BETTWEN 2 and 4
于 2013-03-03T08:40:09.097 回答