我正在尝试使用jdbc模板将数据插入数据库。我在mysql数据库中使用数据库frr在那个表下面的问题是我写的代码,但我得到以下错误:
String cname = bundle.getString("catagory_name");
String jorelnm = bundle.getString("jorel");
String bestseller = bundle.getString("bestseller");
if (cname != null) {
Toast.makeText(getActivity(), cname, Toast.LENGTH_LONG).show();
} else if (jorlenm != null) {
Toast.makeText(getActivity(), jorlenm, Toast.LENGTH_LONG).show();
} //..
App.java文件:
Exception in thread "main" java.lang.ClassCastException: org.springframework.jdbc.datasource.DriverManagerDataSource cannot be cast to sql.sql.App
at sql.sql.App.main(App.java:25)
web.xml:
package sql.sql;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("web.xml");
App obj = (App) context.getBean("dataSource");
JdbcTemplate jdbcTemplateObject = new JdbcTemplate();
String SQL = "insert into issues(issue,status,comment) values (?, ?, ?)";
jdbcTemplateObject.update( SQL, new Object[]{"Zara", "test", "123"} );
System.out.println( "Hello World!" );
}
}
pom.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="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/frr"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>
</beans>
答案 0 :(得分:3)
您的代码存在多处问题。
首先DriverManagerDataSource
是DataSource
,而不是App
类的实例。 (我建议在类继承上进行一些谷歌搜索)。
DataSource ds = context.getBean("dataSource", DataSource.class);
第二,如果这个问题得到解决,你的代码在构建JdbcTemplate
或执行查询时都会失败,因为JdbcTemplate
需要DataSource
它无法在空中运行。
JdbcTemplate jdbcTemplateObject = new JdbcTemplate(ds);
我建议您将JdbcTemplate
添加到配置中并检索而不是DataSource
。
<?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.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/frr"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
然后将主要代码更改为以下内容。
public class App {
public static void main( String[] args ) {
ApplicationContext context = new ClassPathXmlApplicationContext("web.xml");
JdbcTemplate jdbcTemplateObject = context.getBean(JdbcTemplate.class);
String SQL = "insert into issues(issue,status,comment) values (?, ?, ?)";
jdbcTemplateObject.update( SQL, new Object[]{"Zara", "test", "123"} );
System.out.println( "Hello World!" );
}
}
注意:我也怀疑你的xml实际上是在工作(或者pom是你正在使用的pom)。 xml包含对3.0 xsd bean的引用,而你的pom使用2.5版本的Spring。
答案 1 :(得分:1)
context.getBean("dataSource");
返回一个DataSource而不是App类的对象。
DataSource obj = (DataSource) context.getBean("dataSource");
JdbcTemplate jdbcTemplateObject = new JdbcTemplate(obj);
答案 2 :(得分:1)
修改您的代码,如下所示
public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("web.xml");
DataSource obj = (DataSource) context.getBean("dataSource");
JdbcTemplate jdbcTemplateObject = new JdbcTemplate(obj);
String SQL = "insert into issues(issue,status,comment) values (?, ?, ?)";
jdbcTemplateObject.update( SQL, new Object[]{"Zara", "test", "123"} );
System.out.println( "Hello World!" );
}
}