2016-08-02 71 views
0

我创建一个样本BeanLifeCycle与连接
到数据库并插入记录它的一个简单的任务工作。当我写ClientApp.java时,它 返回了很多错误。我已经添加了春天有关的JAR和
我是否需要添加Java相关的任何额外的JAR文件。BeanLifeCycle不使用Java代码

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"); 
} 
    } 

以下程序是ClientApp.java其中很多的错误正在从而块直到开关块生成 。

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> 

的错误是

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

你能证明你spring.xml – kuhajeyan

+0

@kuhajeyan我在现在的问题 –

+0

错字“马桶盖”而不是“开关”添加spring.xml? –

回答

0

格式化ClienApp.java代码如下所示。

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; 
      } 
     } 

    } 
} 

另外对象在ClienApp没有被定义,所以定义也。

在编写代码总是小心标签和间距。

+0

我修改,但仍然类是无法找到。我在程序中编辑的错误。请检查一下。 –

+0

你可以发布你的错误代码后用我的代码代替 –

+0

程序运行正常,但记录没有在MySQL数据库中更新 –

0

你不叫的executeUpdate上的PreparedStatement object.Replace()方法的代码如下得到期望的结果。

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();