Надеюсь, что я правильно понимаю вашу проблему. Вы можете попробовать поместить TabView в MouseArea. Во всяком случае, это не лучшее решение.
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
MouseArea {
anchors.fill: parent
onPressAndHold: console.log("press")
TabView {
Tab {
title: "Red"
Rectangle { color: "red" }
}
Tab {
title: "Blue"
Rectangle { color: "blue" }
}
Tab {
title: "Green"
Rectangle { color: "green" }
}
}
}
}
Вы не можете связать Список с единственным параметром в подготовленном операторе.
Генерируйте SQL с маркер параметра для каждого элемента в списке, например:
SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)
Даже при том, что Вы генерируете новый оператор для каждого запроса, я все еще рекомендовал бы использовать a PreparedStatement
. Если Ваш список содержит String
экземпляры, Вы заставите необходимый выход защищать от Внедрения SQL.
Но даже если это - безопасный тип, как Integer
объекты, некоторые драйверы или промежуточное программное обеспечение могут кэшироваться PreparedStatements
, и возвратите кэшируемый экземпляр, если ту же форму требуют. Конечно, некоторое тестирование было бы необходимо. Если Ваши списки будут значительно различаться в размере, то у Вас будет много различных операторов, и плохо реализованный кэш не мог бы быть готов обработать так многих.
Вы не можете связать его непосредственно. Существует способ передать массив в качестве параметра. Я понятия не имею, что Вы хотите сделать с ним на стороне базы данных, таким образом, это не может помочь Вам.
В основном необходимо создать тип вложенной таблицы в базе данных; создайте Java, основанный на объектах на том типе, содержа данные из Вашего массива; и передача, что как параметр.
Если Вы создали эти объекты в базе данных:
CREATE OR REPLACE TYPE my_nested_table IS TABLE OF VARCHAR2(20);
CREATE TABLE my_table (a my_nested_table) NESTED TABLE a STORE AS my_table_a;
Затем можно написать код Java как это:
String[] insertvalues = { "a", "b", "c" };
PreparedStatement p = conn.prepareStatement("INSERT INTO my_table VALUES( ? )");
ARRAY insertParameter = new ARRAY( a_desc, conn, insertvalues );
p.setArray( 1, insertParameter );
p.execute();
Результаты в Oracle похожи на это:
dev> select * from my_table;
A
--------------------------------------------------------------------------------
MY_NESTED_TABLE('a', 'b', 'c')
Ну, при оценке ответом на тот, особенно комментариями к моему неправильному ответу в том вопросе, Вы не можете.
См. http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html#996857