1

Java を使用して mysql データベースにデータを挿入しようとしています。次のコードを使用してデータベースからデータを取得していますが、正常に動作しています。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DbTest {

public static void main (String[] args) throws Exception{


    // Accessing Driver From Jar File
    Class.forName("com.mysql.jdbc.Driver");

    //DB Connection
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");  

    // MySQL Query
    PreparedStatement statement= con.prepareStatement("SELECT * FROM jam WHERE id='1'");

    //Creating Variable to execute query
    ResultSet result=statement.executeQuery();

    while(result.next()){

        System.out.println(result.getString(2));

    }

  }


  }

データを挿入するには、上記のコードを置き換えるだけで試しました

PreparedStatement statement= con.prepareStatement("SELECT * FROM jam 
 WHERE id='1'");

 PreparedStatement statement= con.prepareStatement("INSERT INTO jam(id,name) 
 VALUES ('','Charlie Sheen')");

しかし、いくつかのエラーが表示されます。私のコードのどこに問題があるのか​​教えてください。

ありがとう :)

4

4 に答える 4

4

主キーが自動インクリメントの場合は、これを試すことができます。

  PreparedStatement statement= con.prepareStatement("INSERT INTO jam(name) 
     VALUES (?)");

    statement.setString(1,"Charlie Sheen");

statement.execute();
于 2012-10-06T13:14:37.297 に答える
1

大量のレコードを挿入する必要がある場合は、一括挿入を使用してください

    import java.sql.Connection;
    import java.sql.PreparedStatement;
     
    //...
     
    String sql = "INSERT INTO jam(id, name) VALUES (?, ?)";
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");  
 PreparedStatement ps = connection.prepareStatement(sql);
     
    for (Employee employee: employees) {
        ps.setString(1, employee.getId());
        ps.setString(2, employee.getName());
        ps.addBatch();
    }
    ps.executeBatch();
    ps.close();
    connection.close();  
于 2012-10-06T13:25:17.043 に答える
0

これも使えると思います(IDが自動インクリメントの場合)

"INSERT INTO jam(name) VALUES ('Charlie Sheen')"

いずれにせよ、特定の int フィールドの値がわからない場合は、クエリに書き込まないことをお勧めします。デフォルトで設定されます。

INTEGER column = '' を設定すると、mysql に問題が発生する可能性があると思います。

通常、->'' の中に数字は入れません。

于 2012-10-06T13:26:47.097 に答える
0
@PostMapping("/save")
public void save(@RequestBody EmployeeListModel employeeListModels) throws SQLException{

    Connection connection=MyDataSource.getConnection(); 

     try{

    connection.setAutoCommit(false);
    PreparedStatement statement = connection.prepareStatement("insert into employee(Id,first_name,last_name,email) values (?,?,?,?)");
    List<EmployeeModel> employeeModels = employeeListModels.getModels();

    Iterator<EmployeeModel> iterator = employeeModels.iterator();

    while(iterator.hasNext()){
        EmployeeModel model = iterator.next();
        statement.setInt(1, model.getId());
        statement.setString(2, model.getFirstName());
        statement.setString(3, model.getLastName());
        statement.setString(4, model.getEmail());
        statement.addBatch();

    }

    int[] updates = statement.executeBatch();

    for(int i=0;i<updates.length;i++){
        if(updates[i] == -2){
            System.out.println("executed fail"+i);
        }
        else{
            System.out.println("executed:"+i+"successful"+updates[i]+"updated");
        }


    }

    connection.commit();
    statement.close();
    connection.close();
     }catch (Exception e) {
        e.printStackTrace();
    }
于 2020-02-10T03:06:57.493 に答える