For*_*DMC 41 java sql variables dynamic prepared-statement
我正在使用java PreparedStatment对象来构造一系列批量INSERT查询.查询语句的格式是......
String strQuery = "INSERT INTO ? (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";
Run Code Online (Sandbox Code Playgroud)
...所以字段值和表名都是变量(即,我有多个具有相同列格式的表,其中每个插入将指向不同的一个).如果删除"?",我可以让执行工作 tablename变量和硬代码,但每个预处理语句将被插入到不同的表中,因此需要保留一个变量,我在执行批处理查询之前立即填充...
stmt.setString(1, "tableName1");
Run Code Online (Sandbox Code Playgroud)
我怎么能让这个变成动态变量呢?
fmu*_*car 61
你不能.您需要使用字符串连接/占位符和String.format构造sql.prepared语句用于列值而不是表名.
您可以使用占位符代替表名,然后将其替换为您的表名.
String strQuery = "INSERT INTO $tableName (col1, col2, col3, col4, col5)
VALUES (?,?,?,?,?,?);";
Run Code Online (Sandbox Code Playgroud)
当你知道tablename时替换
String query =strQuery.replace("$tableName",tableName);
stmt =conn.prepareStatement(query);
Run Code Online (Sandbox Code Playgroud)