2013-12-13 4 views
-4

У меня есть простая программа в jsp. Я пытаюсь сделать соединение с базой данных mysql, используя класс java, и он хорошо связан. проблема в том, КОГДА Я СЛЕДУЕТ ВСТАВИТЬ ДАННЫЕ В БАЗУ ДАННЫХ, ТОЛЬКО «НЕЛЬЗЯ» ЗНАЧЕНИЕ НЕИСПРАВНО.ТОЛЬКО НЕЛЬЗЯ ЗНАЧЕНИЕ ВСТАВЛЯЕТСЯ В БАЗУ ДАННЫХ MYSQL

package DataAccessObject; 

import java.sql.*; 


/** 
* 
* @author user 
*/ 

public class DBConnection { 

private static Connection conn=null; 

private static String url = "jdbc:mysql://localhost:3306/selftest"; 

//private static String dbName = "selftest"; 

private static String driver = "com.mysql.jdbc.Driver"; 

private static String userName = "root"; 

private static String password = "123456"; 

public static Connection getConnection(){ 

     try{ 
      if(conn != null){// 
       return conn;//if the object already exist use it 
      } 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      conn = DriverManager.getConnection(url,userName,password); 
      return conn; 
     }catch(Exception ex){ 
      System.out.println("meche connect hone"); 
      return null; 
     } 
    } 
} 

И ДРУГИЕ КЛАСС

////////////////////////////////// ////////////////////

public class selftestDB { 

    public static void main (String args[]) 
    { 
     selftestDB sd=new selftestDB(); 
    } 
    private Statement stmt = null; 

    private Connection conn = null; 

    public selftestDB() 
    { 
     try { 
      conn = DBConnection.getConnection();//conection lemefter since its possible to create frm any where 
      stmt = conn.createStatement(); 
      System.out.println("hay connection create honual.....enkuan des yaleh"); 
     } catch (Exception ex) { 
      System.out.println("bra izi newu chigiru"); 

     } 
    } 
    public boolean saveacc(accountDO createacc){ 
    { 
     if(stmt==null) 

      return false; 
    } 

    try 
    { 
     System.out.println("datah save honual"); 
     String sql="insert into account(username,password,usertype) values('" 

        + createacc.getusername() + "','" 
        + createacc.getpassword() + "','" 
        + createacc.getusertype() + "')"; 

     /*String sql="insert into account values(?,?,?)"; 
     PreparedStatement ps=conn.prepareStatement(sql); 
     accountDO acd=new accountDO(); 
     String username=acd.getusername(); 
     String password=acd.getpassword(); 
     String usertype=acd.getusertype(); 
      ps.setString(1, username); 
      ps.setString(2, password); 
      ps.setString(3, usertype); 
      ps.executeUpdate(); 
      ps.close(); 
     * int result=ps.executeUpdate(); 
     */ 
      int result=stmt.executeUpdate(sql); 


      if(result>0) 
      { 
       return true; 

      } 

    else 
      { 
       return false; 
      } 
    } 

    catch(Exception e) 
    { 
     System.out.println(e); 
     return false; 
    } 

} 

} 

, пожалуйста, помогите мне, почему "нулевое значение" вставляется [имя пользователя = нулевой пароль = утратившим UserType = нуль]

### помните, у меня есть еще один класс, чтобы «установить» и «получить» данные. и одна страница JSP, чтобы обработать запрос от «формы»

+4

ОБУВЬ в названии не лучший способ обратиться за помощью. – Pshemo

+0

ЭТО ПУТЬ СЛИШКОМ МНОГО КОДА ДЛЯ МЕНЯ, ЧТОБЫ ПРОЧИТАТЬ. ПОЧТОВЫЙ СЦЕПИК, ЕСЛИ ВЫ ХОТИТЕ НЕКОТОРЫЕ ПОМОЩИ OKAY !!!! – Tdorno

+0

[capslock - круиз-контроль для охлаждения] (http://maddox.xmission.com/hatemail.cgi?p=1#CAPSLOCK) – admdrew

ответ

1

есть здесь возможны несколько вещей:

Либо тип данных переменных не совпадают. (то, что вы пытаетесь вставить через SQL-запрос, должно соответствовать типу данных столбца)

или имя переменных «имя пользователя, пароль, тип пользователя» не может найти сопоставление с столбцами базы данных.

+0

Я не знаю, почему мой ответ был опущен. У меня была одна и та же проблема, и вот что я понял. Сначала я думал, что он совершил ошибку, установив связь, и поэтому я ответил на это. затем я отредактировал свой ответ, чтобы сделать из него лучший смысл. – Ashish

0

Я не могу комментировать, так что я должен ответить, как это,

ли вы попробовать перед запуском

int result=stmt.executeUpdate(sql); 

Попробуйте

System.out.printl(createacc.getusername()); 
System.out.printl(createacc.getpassword()); 
System.out.printl(createacc.getusertype()); 

Посмотрите, что вы получите здесь ... Может быть, нет строковых значений

Я уверен, что ваши методы возвращаются NULLS .. или возможны трудности или типа данных. Вам также может потребоваться .toString()

+0

yaa, дорогая его значение NULL в getmethod. но я пытаюсь сделать логический поток, вот ниже код, который устанавливает и получает данные – Sapna

+0

, и у меня есть userform.jsp для пользовательской формы и еще один файл jsp для его обработки. – Sapna

0

Вы никогда не вызываете метод saveAcc в свой код. Когда вы делаете (добавляете) такой код, убедитесь, что вы инициализируете параметр, чтобы он имел значения, которые вы ожидаете добавить в базу данных.

Смежные вопросы