win7 64位 java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 问题

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: 要编写Java应用程序连接到Access数据库中的表product,并查询价格大于100元的记录,需要进行以下步骤: 1. 加载JDBC驱动程序,因为Access数据库需要使用ODBC驱动程序,所以我们可以使用ucanaccess jdbc驱动,需要将它的jar包添加到项目中。 2. 建立连接,使用JDBC API建立与Access数据库的连接,需要提供连接字符串和用户名密码等信息。 3. 创建SQL查询语句,这里要查询表product中价格大于100元的记录,可以使用SELECT语句来实现。 4. 执行查询,使用JDBC API的Statement对象的executeQuery方法执行查询语句,将结果保存在ResultSet对象中。 5. 处理结果,从ResultSet中读取查询结果,并输出。 以下是代码示例,实现上述操作: ``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class AccessDemo { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); // 加载驱动 String dbUrl = "jdbc:ucanaccess://c:/source.mdb;memory=false"; // 连接字符串 conn = DriverManager.getConnection(dbUrl); // 建立连接 stmt = conn.createStatement(); // 创建Statement对象 String sql = "SELECT * FROM product WHERE price > 100"; // 创建查询语句 rs = stmt.executeQuery(sql); // 执行查询 while (rs.next()) { // 处理结果 int pid = rs.getInt("pid"); String pname = rs.getString("pname"); int price = rs.getInt("price"); System.out.println(pid + "\t" + pname + "\t" + price); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭资源 try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 以上就是连接Access数据库,查询表product中价格大于100元的记录的java应用程序的实现过程。 ### 回答2: 首先需要在Java应用程序中使用JDBC连接Access数据库c:\source.mdb。需要使用JDBC-ODBC桥连接Access数据库,因此需要首先在Windows中创建数据源(DSN)。假设我们已经在Windows中创建了名为“mysource”的DSN,现在就可以在Java程序中使用该数据源连接Access数据库了。 以下是与数据库连接并查询的Java代码示例: ``` import java.sql.*; public class AccessDBTest { public static void main(String[] args) { String url = "jdbc:odbc:mysource"; String user = ""; String password = ""; try { Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); String sql = "SELECT * FROM product WHERE price > 100"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { int pid = rs.getInt("pid"); String pname = rs.getString("pname"); int price = rs.getInt("price"); System.out.printf("%d\t%s\t%d\n", pid, pname, price); } rs.close(); stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在以上代码中,首先指定了数据库连接的URL、用户名和密码,并使用`DriverManager.getConnection()`方法创建了一个数据库连接。然后使用连接创建了一个`Statement`对象,并使用该对象执行了一条查询语句。查询结果使用`ResultSet`对象返回,我们可以使用其`next()`方法逐行读取查询结果。 对于每一行记录,我们使用`ResultSet`对象的`getInt()`、`getString()`等方法获取相应列的值,并输出到屏幕上。 需要注意的是,在使用JDBC连接Access数据库时需要使用ODBC驱动程序,因此需要在Windows中安装好ODBC驱动程序Access数据库引擎。 ### 回答3: 要编写Java应用程序连接Access数据库,首先需要下载驱动。在这里,我们选用ucanaccess作为连接Access的驱动。 下载地址:http://ucanaccess.sourceforge.net/site.html 下载完成后,要先将ucanaccess-x.x.x-bin.zip解压缩,在解压缩后的文件夹中找到lib文件夹,将里面的ucanaccess.jar和jackcess-2.1.11.jar加入到项目的classpath中。 在连接数据库之前,需要先将Access文件的路径和数据源名字传递给UCanAccess,具体代码如下: ``` String url = "jdbc:ucanaccess://" + "c:/source.mdb" + ";showschema=true"; Connection conn = DriverManager.getConnection(url, "", ""); ``` 接下来,我们编写查询数据库的代码。先编写SQL查询语句: ``` String sql = "SELECT * FROM product WHERE price > 100"; ``` 然后创建Statement对象,执行SQL语句,并输出查询结果: ``` Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { int pid = rs.getInt("pid"); String pname = rs.getString("pname"); int price = rs.getInt("price"); System.out.println(pid + "\t" + pname + "\t" + price); } ``` 完整的代码如下: ``` import java.sql.*; public class AccessDemo { public static void main(String[] args) throws Exception { String url = "jdbc:ucanaccess://" + "c:/source.mdb" + ";showschema=true"; Connection conn = DriverManager.getConnection(url, "", ""); String sql = "SELECT * FROM product WHERE price > 100"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { int pid = rs.getInt("pid"); String pname = rs.getString("pname"); int price = rs.getInt("price"); System.out.println(pid + "\t" + pname + "\t" + price); } } } ``` 执行代码后,就可以看到查询结果了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值