第一页 netbeans连接access
来源:互联网 发布:mysql小于号写法 编辑:程序博客网 时间:2024/04/27 05:46
最近想来想去,想自己在代码这一块那方面学得最好,想了很久觉得SQL数据库这块我比较容易上手,而我现在的目标是先做一个系统。做系统离不开数据库,于是我就从数据库这模块开始。我想学习技术本是一件很容易让人烦躁的事,所以我觉得最好从自己拿手的那块开始,这样你才有做下去的欲望。
运行结果:
代码如下:
/*
* AccessQuery.java
*
* Created on 2007年9月14日, 下午4:07
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package accessquery;
/**
*使用JDBC-ODBC桥连接数据库
* 1.注册数据库驱动程序
* Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
* 2.连接数据库
* connection = DriverManager.getConnection(
url, username, password );
* @author cai.cn
*/
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class AccessQuery extends JFrame {
//数据库变量定义
private Connection connection;
private Statement statement;
private ResultSet resultSet;
private ResultSetMetaData rsMetaData;
//GUI变量定义
private JTable table;
private JTextArea inputQuery;
private JButton submitQuery;
public AccessQuery() {
//Form的标题
super( "输入SQL语句,按查询按钮查看结果。" );
//url中指定ODBC中设置的DSN名称
String url = "jdbc:odbc:accesstxl";
String username = "";
String password = "";
//加载驱动程序以连接数据库
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
connection = DriverManager.getConnection(
url, username, password );
}
//捕获加载驱动程序异常
catch ( ClassNotFoundException cnfex ) {
System.err.println(
"装载 JDBC/ODBC 驱动程序失败。" );
cnfex.printStackTrace();
System.exit( 1 ); // terminate program
}
//捕获连接数据库异常
catch ( SQLException sqlex ) {
System.err.println( "无法连接数据库" );
sqlex.printStackTrace();
System.exit( 1 ); // terminate program
}
//如果数据库连接成功,则建立GUI
//SQL语句
String test="SELECT * FROM Tbltxl";
inputQuery = new JTextArea( test, 4, 30 );
submitQuery = new JButton( "查 询" );
//Button事件
submitQuery.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
getTable();
}
}
);
JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
//将"输入查询"编辑框布置到 "CENTER"
// JScrollPane滚动条
topPanel.add( new JScrollPane( inputQuery), BorderLayout.CENTER );
//将"提交查询"按钮布置到 "SOUTH"
topPanel.add( submitQuery, BorderLayout.SOUTH );
table = new JTable();
Container c = getContentPane();
c.setLayout( new BorderLayout() );
//将"topPanel"编辑框布置到 "NORTH"
c.add( topPanel, BorderLayout.NORTH );
//将"table"编辑框布置到 "CENTER"
c.add( table, BorderLayout.CENTER );
getTable();
setSize( 500, 300 );
//显示Form
this.setVisible(true);
}
private void getTable() {
try {
//执行SQL语句
String query = inputQuery.getText();
// 创建一个 Statement 对象来将 SQL 语句发送到数据库。
statement = connection.createStatement();
// Statement.executeQuery(String sql) ,String sql为执行语句query
// 执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
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 有助于方便地弹出要求用户提供值或向其发出通知的标准对话框
JOptionPane.showMessageDialog( this,
"结果集中无记录" );
setTitle( "无记录显示" );
return;
}
// 定义列与行容器
Vector columnHeads = new Vector();
Vector rows = new Vector();
try {
//获取字段的名称
// ResultSetMetaData可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。说明就是获取表格的列
// Column列 Row行
ResultSetMetaData rsmd = rs.getMetaData();
// getColumnCount()列的总数
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
// addElement(E obj)
// 将指定的组件添加到此向量的末尾,将其大小增加 1
columnHeads.addElement( rsmd.getColumnName( i ) );
//获取记录集
do {
rows.addElement( getNextRow( rs, rsmd ) );
} while ( rs.next() );
//在表格中显示查询结果
table = new JTable( rows, columnHeads );
// 给表格添加滚动条
JScrollPane scroller = new JScrollPane( table );
// ??不明白为什么又有写这句话 Container c = getContentPane();
Container c = getContentPane();
c.remove(1);
// 把装有滚动条的表格添加到中间
c.add( scroller, BorderLayout.CENTER );
//刷新Table
c.validate();
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
}
}
//??不明白是干什么的
private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd ) throws SQLException {
Vector currentRow = new Vector();
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
currentRow.addElement( rs.getString( i ) );
//返回一条记录
return currentRow;
}
//关闭
public void shutDown() {
try {
//断开数据库连接
connection.close();
}
catch ( SQLException sqlex ) {
System.err.println( "Unable to disconnect" );
sqlex.printStackTrace();
}
}
public static void main( String args[] ) {
// 定义一个 AccessQuery实例
final AccessQuery app = new AccessQuery();
// ??不明白为什么用窗口事件的侦听器接口 ,求讲解。。
app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
app.shutDown();
// 正常关闭
System.exit( 0 );
}
}
);
}
}
- 第一页 netbeans连接access
- 第一页
- 第一页
- 第一页
- 第一页
- 第一页
- 第一页
- 第一页
- 日记本的第一页
- 第一页读者评论
- wftcujln第一页章
- 写在第一页
- HDOJ第一页水题集
- AngualrJs入门第一页
- ViewFlipper 控制第一页和最后一页
- 求实现datagrid 第一页,最后一页
- NETBEANS连接SQL 2000
- Netbeans 连接 MySQL
- 在ASP.NET页面IIS7.5环境下调用MoonAPNS发送iOS全局推送失败的原因
- NYOJ - 矩形的个数
- jsHelper
- 腾讯2013年校园招聘笔试,其中的两道关于fork()的题目
- C# XML操作类 XmlHelper
- 第一页 netbeans连接access
- 腾讯2012.9.23校园招聘会笔试题
- Java实现创建XML文件的方法
- ORACLE用SYS登录报ORA-28009:connection as SYS should be as SYSDBA OR SYSOPER解决方法
- 整数二进制位反转
- C# NetHelper
- O'Reilly原版Linux图书学习线路图
- Oracle10g在CENTOS上的安装和升级(2)——安装升级篇
- require加载用户自定义rb文件方法小结