проблема с сохранением данных - PullRequest
0 голосов
/ 09 апреля 2011

мой код работает должным образом, он сохраняет данные правильно, но когда я добавляю еще два поля, то есть дату и дату рождения, это дает ошибку, то есть синтаксическую ошибку при вставке в оператор.Я использую MS ACCESS для БД.в моей БД я использую тип данных nomber для этих двух полей (т.е. дата и обновление) мой код:

private void saveREGISTRATION1 (java.awt.event.ActionEvent evt) {
int len, len1, len2;

    int regno= Integer.parseInt(cbregn.getSelectedItem().toString());
    if(cbregn.getSelectedItem().toString().equals("")){
    JOptionPane.showMessageDialog(null," SELECT THE REGISTRATION NO ");
    return;
    }


      int date=Integer.parseInt(tdate.getText());
      if(tdate.getText().equals(""))
      JOptionPane.showMessageDialog(null," ENTER THE DATE ");

//// String date = tdate.getText ();// if (date.equals ("")) // JOptionPane.showMessageDialog (null, "ENTER THE DATE");

    String nm= cbnm.getSelectedItem().toString();
    if(nm.equals("")){
    JOptionPane.showMessageDialog(null," ENTER THE NAME ");
    return;
    }


    String place=tfplace.getText();
    if(place.equals("")){
    JOptionPane.showMessageDialog(null," ENTER THE NATIVE PLACE ");
    return;
    }



    String kul=tfkul.getText();
    if(kul.equals("")){
    JOptionPane.showMessageDialog(null," ENTER THE NAME OF KUL ");
    return;
    }

    String gotra=tfgotra.getText();
    if(gotra.equals("")){
    JOptionPane.showMessageDialog(null," ENTER THE GOTRA NAME ");
    return;
    }

    String kswami=tfswami.getText();
    if(kswami.equals("")){
    JOptionPane.showMessageDialog(null," ENTER THE KULSWAMI NAME ");
    return;
    }

    String raddr=taraddr.getText();
    if(raddr.equals("")){
    JOptionPane.showMessageDialog(null," ENTER THE RESIDENSIAL ADDRESS ");
    return;
    }

    int pincode=Integer.parseInt(tfpcd.getText());
    len1 = tfpcd.getText().length();
    if(len1!=7) {
    JOptionPane.showMessageDialog(null,"Enter The 7 Digit Pin Code","Error",JOptionPane.ERROR_MESSAGE);
    return;
    }

    int stdcd=Integer.parseInt(tfstdcode.getText());
    if(tfstdcode.getText().equals("")){
    JOptionPane.showMessageDialog(null," ENTER THE STD CODE ");
    return;
    }


    int tele=Integer.parseInt(tftele.getText());
    len2 = tftele.getText().length();
    if(len2!=7){
    JOptionPane.showMessageDialog(null,"Enter The 7 Digit Telephone No","Error",JOptionPane.ERROR_MESSAGE);
    return;
    }


    int mno=(int) Long.parseLong(tfmno.getText());
    len = tfmno.getText().length();
    if(len!=10) {
    JOptionPane.showMessageDialog(null,"Enter The 10 Digit Mobile No","Error",JOptionPane.ERROR_MESSAGE);
    return;
    }


    String email=tfemail.getText();
    if(email.equals(""))
    JOptionPane.showMessageDialog(null," ENTER THE EMAIL");

    if(email.equals("")) {
        tfemail.setText("-");

    } else // check if it is a valid email-id
    {
    int ind = email.indexOf("@");
        if (ind != -1) { } else {
            JOptionPane.showMessageDialog(null,"Invalid Email Id","Error",JOptionPane.ERROR_MESSAGE);
            tfemail.setText("");
            tfemail.requestFocus();
            return;
        }
    }
    String website=tfweb.getText();
    if(website.equals(""))
    JOptionPane.showMessageDialog(null," ENTER THE WEBSITE ");

    if(website.equals("")) {
        tfweb.setText("-");
    }
    else // check if it is a valid email-id
    {
    int ind = website.indexOf("www");
    if (ind != -1) { } else {
    JOptionPane.showMessageDialog(null,"Invalid Website","Error",JOptionPane.ERROR_MESSAGE);
    tfweb.setText("");
    tfweb.requestFocus();
    return;
   }
}

    String education=tfedu.getText();
    if(education.equals("")){
    JOptionPane.showMessageDialog(null," ENTER THE EDUCATION DETAILS");
    return;
   }

    String branch=tfbrch.getText();
    if(branch.equals("")){
    JOptionPane.showMessageDialog(null," ENTER THE BRANCH NAME ");
    return;
   }


  int brthdt=Integer.parseInt(tfbdt.getText());
  if(tfbdt.getText().equals(""))

// String brthdt = tfbdt.getText ();// if (brthdt.equals ("")) JOptionPane.showMessageDialog (null, "Введите дату рождения");

    String bloodgroup=(String)cbbldgrp.getSelectedItem();
    if(bloodgroup.equals("")){
    JOptionPane.showMessageDialog(null," SELECT THE BLOODGROUP");
    return;
   }

    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con=DriverManager.getConnection("jdbc:odbc:wanisamajDB");
        Statement stmt=con.createStatement();
       //String qry= "INSERT INTO Registration1(RegistrationNo,SeniorPerson,NativePlace,Kul,Gotra,KulSwami,ResidensialAddress,PinCode,STDcode,TelephoneNo,MobileNo,Email,Website,Education,Branch,BloodGroup) VALUES('"+regno+"','"+nm+"','"+place+"','"+kul+"','"+gotra+"','"+kswami+"','"+raddr+"','"+pincode+"','"+stdcd+"','"+tele+"','"+mno+"','"+email+"','"+website+"','"+education+"','"+branch+"','"+bloodgroup+"')";
        System.out.println("qry");
        String qry= "INSERT INTO Registration1(RegistrationNo,SeniorPerson,NativePlace,Kul,Gotra,KulSwami,ResidensialAddress,PinCode,STDcode,TelephoneNo,MobileNo,Email,Website,Education,Branch,BloodGroup,Date,BirthDate) VALUES('"+regno+"','"+nm+"','"+place+"','"+kul+"','"+gotra+"','"+kswami+"','"+raddr+"','"+pincode+"','"+stdcd+"','"+tele+"','"+mno+"','"+email+"','"+website+"','"+education+"','"+branch+"','"+bloodgroup+"','"+date+"','"+brthdt+"')";
        stmt.executeUpdate(qry);
        JOptionPane.showMessageDialog(null,"RECORD IS SAVED SUCCESSFULLY ");
        con.close();

    }
    catch(SQLException eM) {
        System.out.println(" "+eM);
        JOptionPane.showMessageDialog(null,"RECORD IS NOT SAVED");
    } 
    catch(Exception et)
    {
        System.out.println("error:"+et.getMessage());
    }

}

Ответы [ 3 ]

1 голос
/ 09 апреля 2011

Ваш Java-код должен генерировать оператор INSERT, который может принимать ядро ​​базы данных Access.

В Access этот оператор должен работать, предполагая, что оба поля имеют тип данных даты.

INSERT INTO tblFoo([Date],BirthDate) Values (#2011/04/09#, #1960/05/10#)

ПримечаниеЯ заключил название первого поля в квадратные скобки.Я сделал это, чтобы механизм базы данных знал, что Date - это имя поля в таблице, чтобы не путать его с функцией Date ().

Access SQL использует # в качестве разделителя значений литералов даты.

Однако вы указали, что поля Date и BirthDate являются числовыми, а не типом данных date.Если это правда, мне кажется, что это ошибка проектирования.Но в любом случае существующий оператор INSERT пытается вставить текстовые значения в поля Date и BirthDate.Посмотрите внимательно на эту упрощенную версию присваивания переменной qry.

String qry= "INSERT INTO Registration1([Date],BirthDate) VALUES('"+date+"','"+brthdt+"')";

Если Date и BirthDate являются типом данных date, измените разделитель с одинарной кавычки на хэш-символ.

String qry= "INSERT INTO Registration1([Date],BirthDate) VALUES(#"+date+"#,#"+brthdt+"#)";

If Dateи BirthDate на самом деле являются числовыми, измените их на тип данных date.

По сути, вы пытаетесь использовать Java с базой данных Access, когда у вас явно мало понимания того, как работает Access.В результате, ваша проблема с доступом для вас еще сложнее идентифицировать, потому что она скрыта во всех этих подробных Java-материалах.

Я подозреваю, что вы добьетесь большего успеха, создавая операторы SQL в сеансе Access.Если у вас есть оператор SQL, который ядро ​​базы данных может выполнить без ошибок, заново создайте этот SQL с вашим кодом Java.

0 голосов
/ 09 апреля 2011

Вместо того, чтобы заключать строки даты в кавычки, используйте знак фунта / хеша '#'

,'#+date+#','#+brthdt+#')"; 
0 голосов
/ 09 апреля 2011

Какой тип данных вы взяли в базе данных для вставки даты и дня рождения? как вы сказали, вы использовали числовой тип данных для хранения этих данных, измените их на тип данных date.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...