小编Ikk*_*kki的帖子

Java MySQL preparedStatement Batch

我正在尝试使用preparedStatement Batch,但我遇到了问题.

以下代码不会给我错误,但它只在表中插入地图的最后一个键,我不知道为什么.

这肯定是一个非常愚蠢的错误,但这是我第一次使用addBatch()方法.

        Class.forName("com.mysql.jdbc.Driver");
        this.connect = DriverManager.getConnection("jdbc:mysql://localhost/" + this.database + "?user=" + this.user + "&password=" + this.password);
        String s;
        for (String key : this.map.keySet())
        {
            s = ("insert into " + this.database + ".user (nickname) values (?)");
            this.preparedStatement = this.connect.prepareStatement(s);
            this.preparedStatement.setString(1, key);
            this.preparedStatement.addBatch();
        }

        this.preparedStatement.executeBatch();
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java mysql batch-file prepared-statement

1
推荐指数
1
解决办法
2628
查看次数

Java类中的多个构造函数

我对构造函数有些怀疑.

有一个类"Foo"可以在三种不同的"状态"中创建,我们称之为"年轻","成人"和"老".

我想强调它们不能被视为不同的类,因为对象将进化,如果它被创建为"YOUNG",它将变为"ADULT"然后"OLD"等等.

我的问题是:我如何定义一个或多个构造函数来使这三种类型变得多样化?

我看到了一些可能性,但没有人是一个"优雅"的解决方案..

1)创建一个以int作为输入的构造函数

public Foo(int i)
{
    switch (i)
    {
         case 0:
         .
         .
         .
         case 1:
         .
         .
         .
         case 2:
         .
         .
         .
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不喜欢它,因为不清楚是否有人看到这个代码.

2)创建一个空白构造函数,然后创建三个不同的方法,如

public Foo()
{

}

public void setYoungFoo()
{
    .
    .
    .
}

public void setAdultFoo()
{
    .
    .
    .
}

public void setOldFoo()
{
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

这可能是解决问题的明确方法,但我会在构造函数中解决此问题.

3)静态变量在这种情况下有用吗?

public static final String "YOUNG";
public static final String "ADULT";
public static final String "OLD"; …
Run Code Online (Sandbox Code Playgroud)

java constructor static-members

0
推荐指数
1
解决办法
1610
查看次数