你要把 stmt=conn.createStatement();
query="select * from student";
rs=stmt.executeQuery(query);
while(rs.next())
{
subject=rs.getString(2);
answer=rs.getString(3);
System.out.print("问题内容="+subject);
System.out.println(",答案内容="+answer);
}
rs.close();
stmt.close();
conn.close();一起放到 建立 conn 的 try 块中。
query="select * from student";
rs=stmt.executeQuery(query);
while(rs.next())
{
subject=rs.getString(2);
answer=rs.getString(3);
System.out.print("问题内容="+subject);
System.out.println(",答案内容="+answer);
}
rs.close();
stmt.close();
conn.close();一起放到 建立 conn 的 try 块中。
解决方案 »
- Jboss下载的时候的提示
- 有谁用过mathML吗,帮个忙..
- uddi的问题,求助高手
- jacob1.9+jdk1.5,怎么把一个存储htm页面内容的字符串转化为word识别的,因为是直接替换word内容,不转化就会在word显示<table><tr>等标签
- 我的sql文件中有中文内容,拿到非中文环境下执行,结果,中文全变成乱码,数据库里
- ServletInputStream!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 如何用jdom分解xml?
- 有个spring的问题,请教高手,高分谢谢!
- 菜鸟问题:学J2EE 有什么经典的书看...
- 请各路高手帮忙。。。。
- hibernate高手进,hibernate中调用sql的疑问(100分),6点前不定时看贴
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字有什么区别
导致此语句 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 不能执行,
因此语句 conn = DriverManager.getConnection(url, "sa", "1982101"); 不能实例化。
import java.io.*;
public class NorthwindAccessODBCDemo {
public static void main(String[] args) throws Exception {
String query,subject,answer;
Statement stmt;
ResultSet rs;
String url = "jdbc:odbc:student";
Connection conn; //建立连接类
try{
//告诉程序使用jdbc与odbc桥创建数据库联接
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("JDBC-ODBC的驱动程序注册成功");
}catch(Exception e){
System.out.println("找不到JDBC-ODBC的驱动程序");
}
try{
//使用DriverManager类的getConnection()方法建立联接,第一个字符参数定义用户名,
//第二个字符参数定义密码
conn = DriverManager.getConnection(url, "sa", "1982101");
System.out.println("数据库联接成功");
stmt=conn.createStatement();
query="select * from student";
rs=stmt.executeQuery(query);
while(rs.next())
{
subject=rs.getString(2);
answer=rs.getString(3);
System.out.print("问题内容="+subject);
System.out.println(",答案内容="+answer);
}
rs.close();
stmt.close();
conn.close();
}catch(Exception ex){
System.out.println("url定义错误,找不到相关的数据源");
}
}
}
是不对的
Connection con=DriverManager.getConnection(url,info);try {
String url=new String ();
url="jdbc:odbc:pa";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
java.util.Properties info = new java.util.Properties();
info.put("user","sa");
info.put("password","");
info.put("weblogic.codeset","GBK");
Connection con=DriverManager.getConnection(url,info);
DatabaseMetaData dma=con.getMetaData();
out.println("Connected to :"+dma.getURL()); Statement stmt=con.createStatement();
String SQL=new String();
SQL="select * from as_table";
ResultSet rs=stmt.executeQuery(SQL);
out.println("<table width='75%' border='1'>");
while(rs.next()){
String name=new String();
name=rs.getString("tab_na");
out.println(" <tr><td>");
out.println(name);
out.println("</td></tr>");
}
rs.close();
stmt.close();
con.close();
}catch(SQLException ex){
while(ex!=null){
out.println("sqlstate:"+ex.getSQLState());
out.println(ex.toString());
ex=ex.getNextException();
}
}
import java.io.*;public class SqlServerDemo {
Connection conn;
Statement stmt;
ResultSet rs; public static void main(String[] args) throws Exception { } public void print() {
String URL = "jdbc.odbc:student";
String query, subject, answer; try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection(URL, "", ""); stmt = conn.createStatement(); query = "select * from student"; rs = stmt.executeQuery(query);
}
catch (SQLException ex) {
ex.printStackTrace();
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
} try {
while (rs.next()) {
subject = rs.getString(2);
answer = rs.getString(3);
System.out.print("问题内容=" + subject);
System.out.println(",答案内容=" + answer);
}
}
catch (SQLException ex1) {
ex1.printStackTrace();
}
try {
rs.close();
stmt.close();
conn.close();
}
catch (SQLException ex2) {
ex2.printStackTrace();
} }
}
---------------------------
这样定位错误
NorthwindAccessODBCDemo.java:27: variable conn might not have been initialized
stmt=conn.createStatement();
变量conn可能还没有被初始化。如果你在getconn的过程中发生异常被catch到,conn就不会被正常的初始化,但是代码还是向下走到stmt=conn.createStatement();当然这种情况下conn没有被初始化。解决办法:
把这两句话放在一起try...catch...finally
conn=DriverManager.getConnection(..);
stmt=conn.createStatement();后面可能还会告诉你说resultset变量没有初始化,原因也是一样的。记得做完想做的事情以后要把resultset、stmt、conn都关掉。
再试试
//使用DriverManager类的getConnection()方法建立联接,第一个字符参数定义用户名,
//第二个字符参数定义密码
conn = DriverManager.getConnection(url, "sa", "1982101");
System.out.println("数据库联接成功");
}
catch(Exception ex){
System.out.println("url定义错误,找不到相关的数据源");
} stmt = conn.createStatement();conn = DriverManager.getConnection(url, "sa", .....这个 conn 在 try 模块里面初始化,但如果抛出异常,你在 catch 的处理仅仅是打印一句语句,然后继续执行程序,那么当执行到 stmt = conn.createStatement() 的时候,由于 conn 初始化失败了,自然就会抛出 conn might not have been initialized 的错误了,解决办法:
把这些代码全部放在一个 try catch 里面
将Connection conn; //建立连接类
改成Connection conn = null; //建立连接类这是java语言的一个特别的地方,如果是类的实例字段,
Connection conn;
它会自动用null初始化。
但在方法或static块内部, 变量申明时必须要初始化。否则要报错。
初始化的方法一个是 =null,或者 = DriverManager.getConnection(url, "sa", "1982101");