分享
 
 
 

Java的数据库连接

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

java的数据库连接终于做好了,虽然功能是简单了点,不过我会推出复杂一点的程序,可能以后推出的只用鼠标就可以完成绝大部分的数据库操作,好了,这次的数据库还是用的和那个非常小的数据库治理系统(jsp)一样的MySQL web_data 的数据库。

图示如下:

代码如下:

------------------------------------------------------------

import java.sql.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

public class inensshow 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 inensshow()

{

//Form的标题

super( "输入SQL语句,按查询按钮查看结果。" );

String url = "jdbc:mysql://localhost:3306/web";

String username = "inens";

String passWord = "inens";

//加载驱动程序以连接数据库

try {

Class.forName( "org.gjt.mm.mysql.Driver" );

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 data";

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"

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

show();

}

private void getTable()

{

try {

//执行SQL语句

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,

"结果集中无记录" );

setTitle( "无记录显示" );

return;

}

Vector columnHeads = new Vector();

Vector rows = new Vector();

try {

//获取字段的名称

ResultSetMetaData rsmd = rs.getMetaData();

for ( int i = 1; i <= rsmd.getColumnCount(); ++i )

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();

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[] )

{

final inensshow app =

new inensshow();

app.addWindowListener(

new WindowAdapter() {

public void windowClosing( WindowEvent e )

{

app.shutDown();

System.exit( 0 );

}

}

);

}

}

------------------------------------------------------------

这次在WIN98中就不好使了。因为Mysql的驱动程序没有也没能加入到CLASSPATH 当中,但是JSP却可以使用(JSP的98驱动加载详见Jsp与Mysql连接查错文章),所以这次我是在XPServer中测试的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有