簡體   English   中英

Java中的MySQL查詢在數據庫中不起作用

[英]mysql query in java not working in database

我這里有一個方法,應該從我的預設數據庫中獲取數據。 該表已經設置了信息。 但是我無法從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 =新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錯誤,但似乎無法弄清楚。 提前致謝 。

首先,請確保您的表名稱。 是地址卡還是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;

我認為您的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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM