Java 创建在不同表中插入数据的方法
我想用一个方法在不同的表上进行插入,我想让用户 将表的名称和要插入的数据列表作为参数 大概是这样的:Java 创建在不同表中插入数据的方法,java,mysql,insert,prepared-statement,Java,Mysql,Insert,Prepared Statement,我想用一个方法在不同的表上进行插入,我想让用户 将表的名称和要插入的数据列表作为参数 大概是这样的: public void insertar(String tabla, LinkedList data) { String alta = "insert into " + tabla + " values("; for(int i = 0; i < datos.size(); i++) { alta = alta + "?,"; } alta
public void insertar(String tabla, LinkedList data)
{
String alta = "insert into " + tabla + " values(";
for(int i = 0; i < datos.size(); i++) {
alta = alta + "?,";
}
alta = alta.substring(0, alta.length() - 1) + ")";
System.out.println(alta);
try
{
PreparedStatement insertar = con.prepareStatement(alta);
}
catch (SQLException ex)
{
}
}
public abstract class Binding {
public abstract void bind(PreparedStatement ps) throws SQLException;
}
public class IntegerBinding extends Binding {
private int value;
private int index;
public IntegerBinding(int _index, int _value) {
index = _index;
value = _value;
}
public void bind(PreparedStatement ps) throws SQLException {
ps.setInt(index, value);
}
}
public void插入器(字符串tabla,LinkedList数据)
{
字符串alta=“插入“+tabla+”值(”;
对于(int i=0;i
我的问题是,我不知道一旦
字符串是因为数据的大小和类型可以根据
我用的那张桌子
有没有办法做到这一点?或者我需要让它与众不同
提前谢谢 您的链接列表可能应该包含除
字符串以外的内容。您是否考虑过创建一种类型的绑定
类,它知道如何在preparedStatement上设置值?我正在设想这样的事情:
public void insertar(String tabla, LinkedList data)
{
String alta = "insert into " + tabla + " values(";
for(int i = 0; i < datos.size(); i++) {
alta = alta + "?,";
}
alta = alta.substring(0, alta.length() - 1) + ")";
System.out.println(alta);
try
{
PreparedStatement insertar = con.prepareStatement(alta);
}
catch (SQLException ex)
{
}
}
public abstract class Binding {
public abstract void bind(PreparedStatement ps) throws SQLException;
}
public class IntegerBinding extends Binding {
private int value;
private int index;
public IntegerBinding(int _index, int _value) {
index = _index;
value = _value;
}
public void bind(PreparedStatement ps) throws SQLException {
ps.setInt(index, value);
}
}
您可以使用试图应用于PreparedStatement
的值和PreparedStatement
中的索引来创建具体的绑定
实现。当然,您需要编写自己的绑定
子类来包含您感兴趣使用的其他类型的数据
以下是对您的代码的轻微修改,以便能够使用上述思想:
public void insertar(String tabla, List<Binding> bindings)
{
String alta = "insert into " + tabla + " values(";
for(int i = 0; i < datos.size(); i++) {
alta = alta + "?,";
}
alta = alta.substring(0, alta.length() - 1) + ")";
System.out.println(alta);
try
{
PreparedStatement insertar = con.prepareStatement(alta);
for(Binding binding : bindings)
{
binding.bind(insertar);
}
insertar.execute();
}
catch (SQLException ex)
{
}
}
public void insertar(字符串tabla,列表绑定)
{
字符串alta=“插入“+tabla+”值(”;
对于(int i=0;i
我认为这是一个非常方便的解决方案,我希望它能帮助你。祝你好运 您的链接列表可能应该包含除字符串以外的内容。您是否考虑过创建一种类型的绑定
类,它知道如何在preparedStatement上设置值?我正在设想这样的事情:
public void insertar(String tabla, LinkedList data)
{
String alta = "insert into " + tabla + " values(";
for(int i = 0; i < datos.size(); i++) {
alta = alta + "?,";
}
alta = alta.substring(0, alta.length() - 1) + ")";
System.out.println(alta);
try
{
PreparedStatement insertar = con.prepareStatement(alta);
}
catch (SQLException ex)
{
}
}
public abstract class Binding {
public abstract void bind(PreparedStatement ps) throws SQLException;
}
public class IntegerBinding extends Binding {
private int value;
private int index;
public IntegerBinding(int _index, int _value) {
index = _index;
value = _value;
}
public void bind(PreparedStatement ps) throws SQLException {
ps.setInt(index, value);
}
}
您可以使用试图应用于PreparedStatement
的值和PreparedStatement
中的索引来创建具体的绑定
实现。当然,您需要编写自己的绑定
子类来包含您感兴趣使用的其他类型的数据
以下是对您的代码的轻微修改,以便能够使用上述思想:
public void insertar(String tabla, List<Binding> bindings)
{
String alta = "insert into " + tabla + " values(";
for(int i = 0; i < datos.size(); i++) {
alta = alta + "?,";
}
alta = alta.substring(0, alta.length() - 1) + ")";
System.out.println(alta);
try
{
PreparedStatement insertar = con.prepareStatement(alta);
for(Binding binding : bindings)
{
binding.bind(insertar);
}
insertar.execute();
}
catch (SQLException ex)
{
}
}
public void insertar(字符串tabla,列表绑定)
{
字符串alta=“插入“+tabla+”值(”;
对于(int i=0;i
我认为这是一个非常方便的解决方案,我希望它能帮助你。祝你好运 好的,我将实施这个解决方案,看看它是否有效。谢谢,非常感谢,我实现了这个,它成功了。非常感谢=)好的,我将实施这个解决方案,看看它是否有效。谢谢,非常感谢,我实现了这个,它成功了。非常感谢