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条)

报告相同问题?

悬赏问题

  • ¥15 luckysheet
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误