运行时的代码打开了 jdbc 连接,但没有打印表数据。这段代码有啥问题?
Posted
技术标签:
【中文标题】运行时的代码打开了 jdbc 连接,但没有打印表数据。这段代码有啥问题?【英文标题】:The code when run opens the jdbc connection but it is not printing the table data.What is wrong with this code?运行时的代码打开了 jdbc 连接,但没有打印表数据。这段代码有什么问题? 【发布时间】:2016-09-11 13:40:54 【问题描述】:package com.cg.tr.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.cg.trg.utilself.DBUtilSelf;
public class MenuBase
public static void main(String[] args)
Connection connection = DBUtilSelf.openConnection();
System.out.println("Connection opened");
String sql="SELECT BNUM FROM BOOK";
try
Statement st=connection.createStatement();
ResultSet rs=st.executeQuery(sql);
System.out.println("Book details");
while(rs.next())
System.out.print(rs.getInt("BNUM")+"\t");
System.out.print(rs.getString("BNAME")+"\t");
System.out.print(rs.getFloat("BPRICE")+"\t");
System.out.print(rs.getString("BAUTHOR")+"\t");
System.out.println();
catch(SQLException e)
e.printStackTrace();
finally
DBUtilSelf.closeConnection();
此代码在 eclipse 上运行时不会打印 oracle 表中的数据。 输出是:
连接打开 图书详情
它没有进入while循环。也没有产生任何异常。我已确保表中的列名写入正确。仍然没有给出输出
包 com.cg.trg.utilself;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class DBUtilSelf
static Connection connection;
static String url;
static String username;
static String password;
static
//load properties file...
Properties prop =new Properties();
FileInputStream fis;
try
fis=new FileInputStream("jdbc.properties");
prop.load(fis);
catch(IOException e)
System.out.println("Problem while loading properties file:"+e.getMessage());
url=prop.getProperty("url");
username=prop.getProperty("username");
password=prop.getProperty("password");
public static Connection openConnection()
try
connection=DriverManager.getConnection(url,username,password);
catch(SQLException e)
System.out.println("Error while opening connection"+e.getMessage());
return connection;
public static void closeConnection()
if(connection!=null)
try
connection.close();
catch(SQLException e)
System.out.println("Error while closing connection:"+e.getMessage());
这是 DBUtilSelf.java 文件
【问题讨论】:
因为表是空的? 很明显,rs 没有给出任何数据。 从书中选择 *; BNUM BNAME BPRICE BAUTHOR ---------- -------- ---------- ------ -------------- 1001 Let Us C 1200 Yashvant Kanetkar 1002 Core JAVA 2100.65 H.Schild 1003 J2EE 2450 H.Schild 1004 计算机网络 2200 Tanenbaum 1005 操作系统 3290 Millan 1006 算法 1900 Coreman 1007 Complete C++ 1750.55 Yashvant Kanetkar 选择了 7 行。表格不为空 'SELECT BNUM FROM BOOK' 给出了什么? 它给出了所有的booknums BNUM ---------- 1001 1002 1003 1004 1005 1006 1007 【参考方案1】:代码是正确的,但唯一的问题是在sql中创建表后,它没有提交。在 sql 中使用 commit 查询将更改保存在数据库中,以便它们可以通过 jdbc 可见。
【讨论】:
我认为这不可能。如果一个表没有提交到数据库,那么它在物理上是不可用的,即它不存在。由于它不可用/未提交,并且在这种情况下,如果尝试访问它,则会引发异常,例如:java.sql.SQLException: Table not found in statement [SELECT BNUM FROM BOOK]
对应于 check here。顺便说一句,这不是这种情况的解决方案。以上是关于运行时的代码打开了 jdbc 连接,但没有打印表数据。这段代码有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章