AchillesDB 2009-06-21 22:40
浏览 267
已采纳

关于在Spring中使用注入DateSource实现查询数据库

以前查询数据库都是用DriverManager 如:
package TestConnection;
import java.sql.*;
import java.util.Scanner;

public class Testmysql {
public static void main(String[] args) {
Connection conn =null;
Statement stmt=null;
ResultSet rs=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost/mydata?" +
"user=root&password=root");
stmt = conn.createStatement();
stmt.executeUpdate(sql);
rs = stmt.executeQuery("SELECT * FROM dept");
while(rs.next()){
System.out.println(rs.getString("deptno"));
}
}catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
}finally{
try{
if(rs!=null)
rs.close();
rs=null;
if(stmt!=null)
stmt.close();
stmt=null;
if(conn!=null)
conn.close();
conn=null;
}catch(Exception e){
e.printStackTrace();
}
}

}
}

现在想用DataSource实现上述功能 再try 中 这样写
{
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql//localhost/spring");
ds.setUsername("root");
ds.setPassword("root");
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from dept");
}
报No suitable driver 错(我引入了连接的jar包,并且第一个通过DriverManager的可以正常运行)我想请问这是什么问题?
另外如果想通过注入DataSource的方式
我知道在XML 中 这样写





可是在上面的try 里 如何写 才能让结果集中的数据正常输出那?应该另写一个main方法?可是我这个程序是写在main方法中的 直接去掉会报个引号错误(可是引号没有错)请问应该怎么做?
[b]问题补充:[/b]
那是否还用Statement?如何查询结果集那?另外注入方式TRY 中怎么写?

  • 写回答

3条回答 默认 最新

  • star00123 2009-06-22 14:16
    关注

    1、关于使用DataSource实现时报No suitable driver 错的处理:
    try语句块中的url错误,应该修改为:
    [code="java"]ds.setUrl("jdbc:mysql://localhost/spring");
    [/code]

    2、使用Spring配置文件,通过注入DataSource的方式实现时try语句块的实现:
    [code="java"]
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

    DriverManagerDataSource ds = (DriverManagerDataSource)context.getBean("dataSource");

    conn = ds.getConnection();
    stmt = conn.createStatement();
    rs = stmt.executeQuery("select * from dept");
    

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大