如何插入一个循环数组到数据库
我想插入一组阵列到一个loop.My代码数据库(HANA)低于:如何插入一个循环数组到数据库
public class jdemo {
public static void main(String[] args) {
Connection connection = null;
try {
connection = DriverManager.getConnection(
"jdbc:sap://myhdb:30715/?autocommit=false",myname,mysecret);
} catch (SQLException e) {
System.err.println("Connection Failed. User/Passwd Error?");
return;
}
if (connection != null) {
try {
int [] array=new int []{1,2,3};
Array array1= connection.createArrayof("Integer",array)
System.out.println("Connection to HANA successful!");
String sql="INSERT INTO TABLE1 VALUES(1,ARRAY(?))"
PreparedStatement stmt = connection.createStatement(sql);
stmt.setArray(int,array1);
stmt.executeUpdate(sql);
} catch (SQLException e) {
System.err.println("Query failed!");
}
}
}
}
但是,这是行不通的。 我试过
Object [] array=new Object []{1,2,3};
这个返回的方法不支持创建Connection数组。
我的表架构看起来像
ID MARK
__ ____
10 {1,2,3}
11 {3,2,3}
12 {9,2,3}
13 {10,2,3}
14 {12,24,3}
18 {1,27,3}
我也希望我的数据类型为整数array.Any帮助表示赞赏。
“ARRAY插入到HANA”的话题已经让已经讨论了几次在这里。 HANA只支持通过ARRAY()函数存储数组。该函数不会将列表作为参数,而只是单独的元素。
所以,与其
String sql="INSERT INTO TABLE1 VALUES(1,ARRAY(?))"
你会写
String sql="INSERT INTO TABLE1 VALUES(1, ARRAY(1, 2, 3))"
JDBC驱动程序:HANA JDBC不能自动处理Java数组到HANA阵列 - 这是一些开发商将必须手动完成。 (是的,这不是很好,我知道)。
简而言之:当前(HANA 1.0 SP12)阵列基本上可以在内部使用(在存储过程中),但它们不是第一级公民数据类型。 (< - 这是我的意见!)
只是一个想法:
而不是在您的列中存储数组,您可以保存一个由冒号分隔的字符串。当您从数据库查询数据时,可以使用split(","),并且您自动获得所需的数组(Integer.parseInt(String))
您正在使用createStatement而不是prepareStatement。 createStatement确实支持参数!
检查https://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html
而且https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
的细节 希望这有助于
将是很好,如果你提供DDL,错误信息等 接下来的时间,那么它更易于分析。
那么你的TABLE1架构是什么样子? – alexbt
是否有任何输出到控制台?例如,任何异常或连接成功的消息? –
你不能使用一对多的关系吗? – Shinigami