-2

私はgetメソッドを書きましたが、setメソッドを書きたいのですが、次のエラーが表示されます-タイプPreparedStatementのメソッドsetString(int、String)は、引数(String、String、String、String、文字列、) 私のコードはパッケージ com.glomindz.mercuri.dao の下に示されています。

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

 import com.glomindz.mercuri.pojo.User;
 import com.glomindz.mercuri.util.MySingleTon;

 public class UserServicesDAO {

private Connection connection;

public UserServicesDAO() {
    // connection = new MySingleTon().getConnection();
    connection = MySingleTon.getInstance().getConnection();

}

public List<User> get_all_data() {
    List<User> usersList = new ArrayList<User>();
    try {
        PreparedStatement stmt = connection.prepareStatement("INSERT INTO              spl_user_master(name,email,mobile,password,role,status,last_update)VALUES(?,?,?,?,?,?,?)");
         stmt.setString("Charlie Sheen","help@glomindz.com","9654087107","cbf51a71a11d7ec348b0d7e9b2f0055f","admin","3","null");

        boolean execute = stmt.execute();
        System.out.println(execute);
        ResultSet resultSet = stmt.getResultSet();
        System.out.println(resultSet.getMetaData());
        while (resultSet.next()) {
            User user = new User();
            user.setId(resultSet.getInt("id"));
            user.setName(resultSet.getString("name"));
            user.setEmail(resultSet.getString("email"));
            user.setMobile(resultSet.getString("mobile"));
            user.setPassword(resultSet.getString("password"));
            user.setRole(resultSet.getString("role"));
            user.setStatus(resultSet.getString("status"));
            user.setLast_udpate(resultSet.getString("last_update"));
            usersList.add(user);
        }
    } 

    catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return usersList;

}

public static void main(String[] args) {
    UserServicesDAO userdao = new UserServicesDAO();
    List<User> data = userdao.get_all_data();
    System.out.println(data);
    System.exit(0);
}

私のユーザークラスは package com.glomindz.mercuri.pojo; です。

     public class User {

private int  id;

     private String  Name;

private String  email;

private String  mobile;

private String  password;

private String  role;

private String  status;

private String  last_update;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
  return Name;
 }

 public void setName(String name) {
  Name = name;
 }

  public String getEmail() {
  return email;
 }

  public void setEmail(String email) {
  this.email = email;
  }

  public String getMobile() {
  return mobile;
  }

  public void setMobile(String mobile) {
  this.mobile = mobile;
  }

  public String getPassword() {
  return password;
   }

  public void setPassword(String password) {
  this.password = password;
 }

  public String getRole() {
  return role;
  }

   public void setRole(String role) {
  this.role = role;
   }

   public String getStatus() {
  return status;
 }

  public void setStatus(String status) {
      this.status = status;
  }
  public String getLast_update() {
  return last_update;
  }



  public void setLast_udpate(String last_update) {
// TODO Auto-generated method stub

   }




     @Override
   public String toString() {
   return "User [id=" + id + "Name=" + Name + ", email=" + email + ", mobile=" + mobile
          + ", password=" + password + ", role=" + role + ", status="
          + status + ", last_update=" + last_update + "]";
    }



    }
4

5 に答える 5

2

PreparedStatement.setString()は可変アリティ メソッドではありません。変数番号は必要ありません。引数の。各プレースホルダー ( ? ) は、個別に設定する必要があります。

stmt.setString(1, "Charlie Sheen");
stmt.setString(2, "help@glomindz.com");

等々。

Spring のJdbcTemplateの使用

jdbcTemplate.update("INSERT INTO spl_user_master(name,email,mobile,password,role,status,last_update)VALUES(?,?,?,?,?,?,?)", new Object[] {
         "Charlie Sheen","help@glomindz.com","9654087107","cbf51a71a11d7ec348b0d7e9b2f0055f","admin","3","null"});
于 2013-07-18T06:15:47.833 に答える
1
stmt.setString("Charlie Sheen","help@glomindz.com","9654087107","cbf51a71a11d7ec348b0d7e9b2f0055f","admin","3","null");

これはうまくいきません。次のように、これを個別に設定する必要があります。

stmt.setString(1, "Charlie Sheen);

1 は変数の位置で、"Charlie Sheen" は値です。?PreparedStatement にあるすべてのプレースホルダーに対してこれを行う必要があります。

于 2013-07-18T06:18:46.097 に答える
0

このOracle チュートリアルに示されているように、このsetStringメソッドは、パラメーターの数を表す整数と、値を表す文字列を受け取ります。したがって、あなたの場合、次のようにする必要があります。

PreparedStatement stmt = connection.prepareStatement("INSERT INTO spl_user_master(name,email,mobile,password,role,status,last_update)VALUES(?,?,?,?,?,?,?)");
stmt.setString(1, "Charlie Sheen");
stmt.setString(2, "help@glomindz.com");
...
于 2013-07-18T06:16:19.753 に答える
0

ここに問題があります.setStringを使用して一度にすべてのパラメータを設定することはできません. setString を使用して各パラメーターを 1 つずつ設定する必要があります。

stmt.setString("Charlie Sheen","help@glomindz.com","9654087107","cbf51a71a11d7ec348b0d7e9b2f0055f","admin","3","null");

javadoc から:

setString

void setString(int parameterIndex, String x) は SQLException をスローします

指定されたパラメーターを指定された Java String 値に設定します。ドライバーは、これをデータベースに送信するときに、これを SQL VARCHAR または LONGVARCHAR 値 (VARCHAR 値に対するドライバーの制限に対する引数のサイズに応じて) に変換します。

パラメータ: parameterIndex - 最初のパラメータは 1、2 番目のパラメータは 2、... x - パラメータ値

例外: SQLException - parameterIndex が SQL ステートメントのパラメーター マーカーに対応しない場合。データベース アクセス エラーが発生した場合、またはこのメソッドがクローズされた PreparedStatement で呼び出された場合

于 2013-07-18T06:15:58.027 に答える
0

すでに他の人が投稿したように、間違ったパラメーターをsetString()メソッドに渡しています。?クエリで定義された各プレースホルダーに個別に値を設定する必要があることに注意してください。

PreparedStatement stmt = connection.prepareStatement("INSERT INTO
     spl_user_master(name,email,mobile,password,role,status,last_update)
     VALUES(?,?,?,?,?,?,?)");
stmt.setString(1,"Charlie Sheen");
stmt.setString(2,"help@glomindz.com");

     ... so on ...

対応する列が として定義されている場合、プレースホルダーの代わりに値 をsetString()設定するために使用されます。他のデータ型については、API にさまざまなメソッドがあります。SQL VARCHAR or LONGVARCHARSQL VARCHAR or LONGVARCHARsetXXX()

于 2013-07-18T06:19:48.353 に答える