2016-08-02 7 views
0

Ich erstelle ein Beispiel BeanLifeCycle mit einer einfachen Aufgabe der Verbindung
Datenbank und Einfügen von Datensätzen in es. Wenn ich ClientApp.java schreibe, gibt es viele Fehler zurück. Ich habe bereits im Frühjahr verwandte JARs und
hinzugefügt Muss ich zusätzliche JARS in Bezug auf Java hinzufügen.BeanLifeCycle funktioniert nicht mit Java-Code

package beans; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 

import org.springframework.beans.factory.DisposableBean; 
import org.springframework.beans.factory.InitializingBean; 

public class Test implements InitializingBean, DisposableBean 
    { 
    private String driver,url,username,pwd; 
    private Connection con; 
    public void setDriver(String driver) { 
    this.driver = driver; 
    } 
    public void setUrl(String url) { 
this.url = url; 
    } 
    public void setUsername(String username) { 
    this.username = username; 
    } 
    public void setPwd(String pwd) { 
    this.pwd = pwd; 
    } 
    @Override 
     public void afterPropertiesSet() throws Exception { 
    Class.forName(driver); 
     con=DriverManager.getConnection(url, username,pwd); 

    } 
     public void save(int id,String name, String email,String address) 
     throws Exception 
     { 
    PreparedStatement ps=con.prepareStatement("insert into student  
     values(?,?,?,?)"); 
ps.setInt(1, id); 
ps.setString(2, name); 
ps.setString(3, email); 
ps.setString(4, address); 

     @Override 
public void destroy() throws Exception { 
    // TODO Auto-generated method stub 
     con.close(); 
      System.out.println("connection closed"); 
} 
    } 

Das folgende Programm ist ClientApp.java wo viele Fehler von während der Block bis Schalterblock erzeugt werden.

package beans; 

    import java.util.Scanner; 

    import org.springframework.context.ApplicationContext; 
    import org.springframework.context.ConfigurableApplicationContext; 
    import org.springframework.context.support. 
     ClassPathXmlApplicationContext; 
    import beans.Test; 

    public class ClientApp 
    { 
public static void main(String[] args) throws Exception{ 
    ConfigurableApplicationContext context=new 
     ClassPathXmlApplicationContext("spring.xml"); 
    while(true) 
{ 
     Scanner sc=new Scanner(System.in); 
     System.out.println("Enter 1 for save and 2 for exit"); 
     int i=sc.nextInt(); 
     swtich(i) 
     { 
      case 1: Test t=(Test)context.getBean("t"); 
      System.out.println("Enter id"); 
      int id=sc.nextInt(); 
      System.out.println("Enter Name"); 
      String name=sc.next(); 
      System.out.println("Enter Email"); 
      String email=sc.next(); 
      System.out.println("Enter Address"); 
      String address=sc.next(); 
      t.save(id, name, email, address); 
      break; 
     default: 
      cap.close(); 
      break; 

     } 
    } 

    } 
    } 



    Please help me with this task to execute. What other JARs do I need to 
add to connect to database and insert the records into it 

    This is the spring.xml 

    <?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 
    <bean id="t" class="beans.Test"> 
    <property name="driver" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost/loginuser"/> 
     <property name="username" value="root"/> 
     <property name="pwd" value="root"/> 
    </bean> 
    </beans> 

Die Fehler sind

WARNING: Exception encountered during context initialization - 
    cancelling refresh attempt: 
    org.springframework.beans.factory.BeanCreationException: Error creating 
    bean with name 't' defined in class path resource [spring.xml]: 
    Invocation of init method failed; nested exception is 
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 

    Exception in thread "main" 
    org.springframework.beans.factory.BeanCreationException: Error creating 
    bean with name 't' defined in class path resource [spring.xml]: 
    Invocation of init method failed; nested exception is 
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at org.springframework.beans.factory.support. 
    AbstractAutowireCapableBeanFactory.initializeBean 
    (AbstractAutowireCapableBeanFactory.java:1578) 
at org.springframework.beans.factory.support. 
    AbstractAutowireCapableBeanFactory.doCreateBean 
    (AbstractAutowireCapableBeanFactory.java:545) 
at org.springframework.beans.factory.support. 
    AbstractAutowireCapableBeanFactory.createBean 
    (AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support. 
    AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
at org.springframework.beans.factory.support. 
    DefaultSingletonBeanRegistry.getSingleton 

    (DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support. 
    AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
at org.springframework.beans.factory.support. 
    AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
at org.springframework.beans.factory.support. 
    DefaultListableBeanFactory.preInstantiateSingletons 
    (DefaultListableBeanFactory.java:772) 
at org.springframework.context.support. 
    AbstractApplicationContext.finishBeanFactoryInitialization 
    (AbstractApplicationContext.java:839) 
at org.springframework.context.support. 
    AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) 
at org.springframework.context.support. 
    ClassPathXmlApplicationContext.<init> 
    (ClassPathXmlApplicationContext.java:139) 
at org.springframework.context.support. 
    ClassPathXmlApplicationContext.<init> 
    (ClassPathXmlApplicationContext.java:83) 
at beans.ClientApp.main(ClientApp.java:12) 
    Caused by: java.lang.ClassNotFoundException: 
    com.mysql.jdbc.Driver 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Unknown Source) 
at beans.Test.afterPropertiesSet(Test.java:28) 
at org.springframework.beans.factory.support. 
    AbstractAutowireCapableBeanFactory.invokeInitMethods 
    (AbstractAutowireCapableBeanFactory.java:1637) 
at org.springframework.beans.factory.support. 
    AbstractAutowireCapableBeanFactory.initializeBean 
    (AbstractAutowireCapableBeanFactory.java:1574) 
... 12 more 
+0

können Sie zeigen Sie – kuhajeyan

+0

spring.xml @kuhajeyan ich spring.xml in meine Frage jetzt –

+0

Typo "swtich" anstelle von "switch" hinzugefügt? –

Antwort

0

Reformierte Ihre ClienApp.java Code wie unten.

import java.util.Scanner; 

import org.springframework.context.ApplicationContext; 
import org.springframework.context.ConfigurableApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class ClientApp 
{ 
    public static void main(String[] args) throws Exception{ 
     ConfigurableApplicationContext context=new 
        ClassPathXmlApplicationContext("spring.xml"); 

     while(true) 
     { 
      Scanner sc = new Scanner(System.in); 
      System.out.println("Enter 1 for save and 2 for exit"); 
      int i = sc.nextInt(); 
      switch(i){ 
       case 1: Test t = (Test)context.getBean("t"); 
         System.out.println("Enter ID"); 
         int id = sc.nextInt(); 
         System.out.println("Enter Name"); 
         String name=sc.next(); 
         System.out.println("Enter Email"); 
         String email=sc.next(); 
         System.out.println("Enter Address"); 
         String address=sc.next(); 
         t.save(id, name, email, address); 
         break; 
       default: 
         cap.close(); 
         break; 
      } 
     } 

    } 
} 

Auch wird Kappe Objekt nicht in ClienApp definiert ist, so dass auch definiert.

Beim Schreiben von Code immer vorsichtig sein, Tabs und Abstände.

+0

ich geändert, aber immer noch die Klasse ist nicht in der Lage zu finden. Die Fehler, die ich im Programm bearbeitet habe. Bitte schau es dir an. –

+0

Kannst du den Fehler, den du bekommst, nachdem Code mit meinem Code ersetzt wurde –

+0

das Programm läuft gut, aber die Datensätze werden nicht in MySQL-Datenbank aktualisiert –

0

Sie haben die executeUpdate() -Methode für das PreparedStatement-Objekt nicht aufgerufen. Ersetzen Sie den Code wie folgt, um das gewünschte Ergebnis zu erhalten.

PreparedStatement ps = con.prepareStatement("insert into student values(?,?,?,?)"); 

ps.setInt(1, id); 
ps.setString(2, name); 
ps.setString(3, email); 
ps.setString(4, address); 

ps.executeUpdate(); 
Verwandte Themen