Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建在不同表中插入数据的方法_Java_Mysql_Insert_Prepared Statement - Fatal编程技术网

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

我认为这是一个非常方便的解决方案,我希望它能帮助你。祝你好运

好的,我将实施这个解决方案,看看它是否有效。谢谢,非常感谢,我实现了这个,它成功了。非常感谢=)好的,我将实施这个解决方案,看看它是否有效。谢谢,非常感谢,我实现了这个,它成功了。非常感谢