| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 535 人关注过本帖
标题:求教数据库连接问题
只看楼主 加入收藏
zhanglinkai
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-11-25
收藏
 问题点数:0 回复次数:7 
求教数据库连接问题
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class DisplayQueryResults extends JFrame{
private Connection connection;
private ResultSet resultSet;
private Statement statement;
private ResultSetMetaData rsMetaData;
private JTable table;
private JButton submitQuery;
private JTextArea inputQuery;
public DisplayQueryResults(){
super("Enter Query Click Submit to see Results.");
String url="jdbc:odbc:Book";
String username="zhang";
String password="111";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection=DriverManager.getConnection(url,username,password);
}catch(ClassNotFoundException cnfex){
System.err.println("Failed to load JDBC\\ODBC driver");
cnfex.printStackTrace();
System.exit(1);
}catch(SQLException sqlex){
System.err.print("Unable to cpnnect");
sqlex.printStackTrace();
System.exit(1);
}
inputQuery=new JTextArea("SELECT * FROM Author",4,30);
submitQuery=new JButton("Submit Query");
submitQuery.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource()==submitQuery)
getTable();
}
});
JPanel topPanel=new JPanel();
topPanel.setLayout(new BorderLayout());
topPanel.add(new JScrollPane(inputQuery),BorderLayout.CENTER);
topPanel.add(submitQuery,BorderLayout.SOUTH);
table=new JTable(4,4);
Container c=getContentPane();
c.setLayout(new BorderLayout());
c.add(topPanel,BorderLayout.NORTH);
c.add(table,BorderLayout.CENTER);
getTable();
setSize(500,500);
setVisible(true);
}
private void getTable(){
try{
String query=inputQuery.getText();
statement=connection.createStatement();
resultSet=statement.executeQuery(query);
displayResultSet(resultSet);
}catch(SQLException sqlex){
sqlex.printStackTrace();
}
}
private void displayResultSet(ResultSet rs)
throws SQLException
{
boolean moreRecords=rs.next();
if(!moreRecords){
JOptionPane.showMessageDialog(this,"ResultSet contained no records");
setTitle("No record to display");
return;
}
Vector columnHeads=new Vector();
Vector rows=new Vector();
try{
ResultSetMetaData rsmd=rs.getMetaData();
for(int i=0;i<rsmd.getColumnCount();i++)
columnHeads.addElement(rsmd.getColumnClassName(i));
do{
rows.addElement(getNextRow(rs,rsmd));
}while(rs.next());
table=new JTable(rows,columnHeads);
JScrollPane scroll=new JScrollPane(table);
Container c=getContentPane();
c.remove(1);
c.add(scroll,BorderLayout.CENTER);
c.validate();
}catch(SQLException sqlex){
sqlex.printStackTrace();
}
}
private Vector getNextRow(ResultSet rs,ResultSetMetaData rsmd)
throws SQLException{
Vector currentRow=new Vector();
for(int i=0;i<rsmd.getColumnCount();i++){
switch(rsmd.getColumnType(i)){
case Types.VARCHAR:
case Types.LONGVARCHAR:
currentRow.addElement(rs.getString(i));
break;
default:
System.out.println("Type was:"+rsmd.getColumnTypeName(i));
}
}
return currentRow;
}
public static void main(String[] args){
new DisplayQueryResults();
}
}

本人初学请大家帮忙指教一下这是什么问题,万分感激!!
图片附件: 游客没有浏览图片的权限,请 登录注册

[此贴子已经被作者于2007-3-23 13:08:51编辑过]

搜索更多相关主题的帖子: 数据库 import private java awt 
2007-03-23 13:00
黄袖标
Rank: 4
等 级:贵宾
威 望:13
帖 子:676
专家分:0
注 册:2007-3-22
收藏
得分:0 
好象是自己的写的gui版的查询分析器。。。错误信息呢?

我胡汉三又回来啦!物是人非啊,只有静夜思大大还在。
2007-03-23 13:06
zhanglinkai
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-11-25
收藏
得分:0 

不好意思 刚才图片没发上来,您受累给指教指教错误!!谢谢!!


希望自己能走的更远!!!
2007-03-23 13:10
黄袖标
Rank: 4
等 级:贵宾
威 望:13
帖 子:676
专家分:0
注 册:2007-3-22
收藏
得分:0 
不太确定你是不是连到db了,建议先把执行的sql都去掉,然后把cn打出来,看看拿到cn没有,拿到的话,就是你的sql或者rs有问题,如果没拿到cn,就是你的驱动连接的问题,指教诚不敢当

我胡汉三又回来啦!物是人非啊,只有静夜思大大还在。
2007-03-23 13:16
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
数据库是联上了,但是可能是你的语句有问题

可惜不是你,陪我到最后
2007-03-23 13:27
zhanglinkai
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-11-25
收藏
得分:0 
我把语句直接复到SQL SERVER 2000的查询分析器中查询没问题 能找到数据 谢谢指教!!

希望自己能走的更远!!!
2007-03-23 13:40
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
看看你的代码第57行

可惜不是你,陪我到最后
2007-03-23 13:51
zhanglinkai
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-11-25
收藏
得分:0 

弄了一晚上终于明白了 是编码错误 for(int i=0;i<rsmd.getColumnCount();i++)
for(int i=0;i<rsmd.getColumnCount();i++)这里的I应该以1开始.学习的困难太多了 两天就学会了个1.
谢谢两位的指教!!根据四楼的话我才找出我的错误.


希望自己能走的更远!!!
2007-03-23 22:40
快速回复:求教数据库连接问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020728 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved