2016-04-03 20 views
2

kullanarak SQL tabloları güncellemek için çalışılıyor:Ben 8 tablolar bir veritabanı inşa ediyorum ve ben şu işlevleri yerine edecek bir UI oluşturmak için Java Çerçeveler kullanıyorum Java

ınsert, Update Sil, Ara ve Seç.

Tüm işlevler güncelleştirme dışında iyi çalışır.

stmt_update = conn_update.createStatement(); 
    stmt_update.executeUpdate("UPDATE Conference SET C_NAME = '" + confname + "', C_YEAR = " + yr 
       + ", START_DATE = to_timestamp('" +stdate +"','yyyy-mm-dd HH24:MI:ss.FF1'), END_DATE = to_timestamp('" +enddate +"','yyyy-mm-dd HH24:MI:ss.FF1')," 
       + "COUNTRY = '"+country_update+"', CITY = '"+city_update+"', VENUE = '"+venue_update+"'," 
       + ", CONTACT_EMAIL = '"+c_email_update+"' where conference_id = '" + confid + "'"); 

Tablo yapısı şöyledir::

(
Conference_ID varchar(10) NOT NULL, 
C_Name varchar(20), 
C_Year numeric(4,0), 
Start_Date date, 
End_Date date, 
Country varchar(10), 
City varchar(10), 
Venue varchar(10), 
Contact_Email varchar(10), 
PRIMARY KEY(Conference_ID) 
); 

Hata geçerli: güncelleştirme için kod aşağıdadır

ORA-01747: geçersiz user.table.column, table.column veya sütun belirtim

Yapacak bir şey olduğunu düşündüm Tarih girişleri ile.

Her türlü öneri çok yardımcı olacaktır.

Teşekkürler.

----- Güncelleme

stmt_update = conn_update.prepareStatement("UPDATE Conference SET C_NAME = '" + confname + "', C_YEAR = " + yr 
        + ", START_DATE = to_timestamp('" +stdate +"','yyyy-mm-dd HH24:MI:ss.FF1'), END_DATE = to_timestamp('" +enddate +"','yyyy-mm-dd HH24:MI:ss.FF1')," 
        + "COUNTRY = '"+country_update+"', CITY = '"+city_update+"', VENUE = '"+venue_update+"'," 
        + ", CONTACT_EMAIL = '"+c_email_update+"' where conference_id = '" + confid + "'"); 
      stmt_update.executeUpdate("UPDATE Conference SET C_NAME = '" + confname + "', C_YEAR = " + yr 
        + ", START_DATE = to_timestamp('" +stdate +"','yyyy-mm-dd HH24:MI:ss.FF1'), END_DATE = to_timestamp('" +enddate +"','yyyy-mm-dd HH24:MI:ss.FF1')," 
        + "COUNTRY = '"+country_update+"', CITY = '"+city_update+"', VENUE = '"+venue_update+"'," 
        + ", CONTACT_EMAIL = '"+c_email_update+"' where conference_id = '" + confid + "'"); 

Yine aynı hata alıyorum deyimini hazırlamak kullanarak çalıştı -------------- .

hata:

ORA-01.747: geçersiz user.table.column, table.column ya da sütun özellikleri hataya neden

+4

Baskı üretilen tablosu ve ekleme bu sorunun sonucu. Ayrıca, SQL enjeksiyonuna açıksınız. Bir 'PreparedStatement' kullanmanız daha iyi olur (ve hatalarınız o zaman da ortadan kalkarsa şaşırmazdım). –

+0

Hazırlanmış bir ifade kullanmayı denediyseniz, lütfen soruya ekleyin. Hazırlanan ifadeyi, kötü yapılandırılmış, güvensiz SQL deyiminden düzeltmek daha iyi olurdu. – RealSkeptic

+0

Girişleriniz için teşekkürler. Anlaşılan, soruna neden olan bir virgüldü. – shubhs9

cevap

1
stmt_update = conn_update.createStatement(); 
    stmt_update.executeUpdate("UPDATE Conference SET C_NAME = '" + confname + "', C_YEAR = " + yr 
       + ", START_DATE = to_timestamp('" +stdate +"','yyyy-mm-dd HH24:MI:ss.FF1'), END_DATE = to_timestamp('" +enddate +"','yyyy-mm-dd HH24:MI:ss.FF1')," 
       + "COUNTRY = '"+country_update+"', CITY = '"+city_update+"', VENUE = '"+venue_update+"'," 
       + ", CONTACT_EMAIL = '"+c_email_update+"' where conference_id = '" + confid + "'"); 
        __ Here one extra comma is exist. 

Bu iki virgül.

stmt_update = conn_update.createStatement(); 
    stmt_update.executeUpdate("UPDATE Conference SET C_NAME = '" + confname + "', C_YEAR = " + yr + ", " 
       + "START_DATE = to_timestamp('" + stdate + "','yyyy-mm-dd HH24:MI:ss.FF1'), END_DATE = to_timestamp('" + enddate + "','yyyy-mm-dd HH24:MI:ss.FF1'), " 
       + "COUNTRY = '" + country_update + "', CITY = '"+city_update+"', VENUE = '"+ venue_update + "', " 
       + "CONTACT_EMAIL = '" + c_email_update + "' WHERE conference_id = '" + confid + "'"); 
+0

Kod güzel çalıştı. Bir ton teşekkürler. Aptal ben. Virgülleri kontrol etmeliydin. – shubhs9

+0

@ shubhs9: Bazı zamanlar küçük yazım hataları zamanımızı öldürür, bazılarının görüşüne ihtiyaç duyabilir. Size yardımcı olmaktan mutluluk duyuyorum. Şerefe. – Arulkumar

0

bu kadar kullanım için bu: burada

java.sql.PreparedStatement stm=your_conn_variable.prepareStatement("UPDATE table_name set field_name=?,seconde_field=? "); 
// 
stm.setString(1,your_value); 
stm.setString(2,your_seconde_value); 
stm.executeUpdate(); 
//will not have to write all this lines and forget all ' , ; 

davanızı gibi bir örnektir:

Yani kodu olmalıdır

stmt_update = conn_update..prepareStatement("UPDATE Conference SET C_NAME = ?") 
stmt_update.setString(1,confname); 
stmt_update.executeUpdate();