java中的mysql查询在数据库中不起作用

时间:2016-01-13 02:49:47

标签: java mysql database eclipse

我在这里有一个方法,它应该从我的预设数据库中获取数据。该表已经在其中设置了信息。但我无法从我的java程序中的表中检索数据。其余代码可以像setter和getter一样工作。 我有一个其他的方法写入数据库中的特定行。这很好用,所以我知道eclipse和我的数据库之间存在联系。

我有什么:

public void readCard(int id){

  try{      
  java.sql.Statement statement=con.connection.createStatement();
  this.id=id;

  String gget;
  gget= "SELECT DISTINCT * FROM addresscard WHERE (id = \""+ 
  this.id +"\");"; 

  ResultSet rs= statement.executeQuery(gget);

  rs.next();

  this.id= rs.getInt(1);
  this.name= rs.getString(2);
  this.adress= rs.getString(3);
  this.postcode= rs.getString(4);
  this.place= rs.getString(5);
  this.telephone= rs.getString(6);

  System.out.println(this.id);

  }catch(Exception e){
  System.out.println(" did not read anything");
        }
我把它放了      String gget =“SELECT DISTINCT * FROM adreskaart WHERE(id = \”“+       this.id +“\”);“;
在mysql中:     SELECT DISTINCT * FROM adreskaart WHERE id = 2;

选择与id 2对应的行。所以我的数据库运行正常。 我的猜测是我在eclipse中的sql代码是错误的。 任何人都可以看到为什么我无法从数据库中读取。

非常感谢

编辑在我的changeCard()中,我应该能够在我的测试人员类中调整数据,如:         Connectie con = new Connectie();     AddressCard ac = new AddressCard();

    ak.readCard(2);
ak.setName("prof dr ir P chimp");   
ak.changeCard();

Vector tabel;

    tabel=ak.readAllCards();

当然所有的gui好东西都在这里。

public void changeCard(){

     try{
     java.sql.Statement statement= con.connection.createStatement();   

 String sset;  
 sset= "UPDATE adresKaart " + " SET naam = '" + this.naam + "', "     + "adres='" + this.adres + "'," +
         " postcode='" + this.postcode + "'," + "plaats='" +     this.plaats + "'," + "telefoon='" + this.telefoon
           + "' " + " WHERE adreskaart.id = " + this.id; 

         statement.executeUpdate(sset);      

     }catch(Exception e){
         System.out.println(" did not change anything");
         e.printStackTrace();
     } 
    }

似乎我有错误的SQL,但似乎无法弄明白。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

首先,确保你的表名。是地址卡还是adreskaart?

正如您所写,您的查询应为

SELECT DISTINCT * FROM addresscard WHERE id = 2

但是,现在是(额外的引号)

SELECT DISTINCT * FROM addresscard WHERE id = "2"

如果您将id存储为整数,则不应该放置这些引号。如果id存储为varchar,那么你应该。而且,不需要在查询结束时加分号。试试以下。

gget= "SELECT DISTINCT * FROM addresscard WHERE id = " + this.id;

答案 1 :(得分:0)

我认为你的slq得到arry的结果。所以,你应该看到结果:

while(rs.next()){
   this.id= rs.getInt(1);
   this.name= rs.getString(2);
   this.adress= rs.getString(3);
   this.postcode= rs.getString(4);
   this.place= rs.getString(5);
   this.telephone= rs.getString(6);
}