一个通过Java连接MySQL数据库的代码
这次的Java连接MySQL数据库操作,还是用的和那个非常小的数据库管理系统(JSP)一样的MySQLweb_data的数据库。
代码如下:
importjava.sql.;
importjavax.swing.;
importjava.awt.;
importjava.awt.event.;
importjava.util.;
publicclassinensshowextendsJFrame{
privateConnectionconnection;
privateStatementstatement;
privateResultSetresultSet;
privateResultSetMetaDatarsMetaData;
//GUI变量定义
privateJTabletable;
privateJTextAreainputQuery;
privateJButtonsubmitQuery;
publicinensshow()
{
//Form的标题
super("输入SQL语句,按查询按钮查看结果。");
Stringurl="jdbc:mysql://localhost:3306/web";
Stringusername="inens";
Stringpassword="inens";
//加载驱动程序以连接数据库
try{
Class.forName("org.gjt.mm.mysql.Driver");
connection=DriverManager.getConnection(url,username,password);}
//捕获加载驱动程序异常
catch(ClassNotFoundExceptioncnfex){
System.err.println("装载JDBC/ODBC驱动程序失败。");
cnfex.printStackTrace();
System.exit(1);//terminateprogram
}
//捕获连接数据库异常
catch(SQLExceptionsqlex){
System.err.println("无法连接数据库");
sqlex.printStackTrace();
System.exit(1);//terminateprogram
}
//如果数据库连接成功,则建立GUI
//SQL语句
Stringtest="SELECTFROMdata";
inputQuery=newJTextArea(test,4,30);
submitQuery=newJButton("查询");
//Button事件
submitQuery.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
getTable();
}
}
);
JPaneltopPanel=newJPanel();
topPanel.setLayout(newBorderLayout());
//将"输入查询"编辑框布置到"CENTER"
topPanel.add(newJScrollPane(inputQuery),BorderLayout.CENTER);
//将"提交查询"按钮布置到"SOUTH"topPanel.add(submitQuery,BorderLayout.SOUTH);
table=newJTable();
Containerc=getContentPane();
c.setLayout(newBorderLayout());
//将"topPanel"编辑框布置到"NORTH"
c.add(topPanel,BorderLayout.NORTH);
//将"table"编辑框布置到"CENTER"
c.add(table,BorderLayout.CENTER);
getTable();
setSize(500,300);/
/显示Form
show();
}
privatevoidgetTable()
{
try{
//执行SQL语句
Stringquery=inputQuery.getText();
statement=connection.createStatement();
resultSet=statement.executeQuery(query);
//在表格中显示查询结果
displayResultSet(resultSet);
}
catch(SQLExceptionsqlex){
sqlex.printStackTrace();
}
}
privatevoiddisplayResultSet(ResultSetrs)
throwsSQLException
{
//定位到达第一条记录booleanmoreRecords=rs.next();/
/如果没有记录,则提示一条消息
if(!moreRecords){
JOptionPane.showMessageDialog(this,"结果集中无记录");
setTitle("无记录显示");
return;
}
VectorcolumnHeads=newVector();
Vectorrows=newVector();
try{
//获取字段的名称
ResultSetMetaDatarsrsmd=rs.getMetaData();
for(inti=1;i<=rsmd.getColumnCount();++i)
columnHeads.addElement(rsmd.getColumnName(i));
//获取记录集
do{
rows.addElement(getNextRow(rs,rsmd));
}while(rs.next());
//在表格中显示查询结果
table=newJTable(rows,columnHeads);
JScrollPanescroller=newJScrollPane(table);
Containerc=getContentPane();
c.remove(1);
c.add(scroller,BorderLayout.CENTER);
//刷新Table
c.validate();
}
catch(SQLExceptionsqlex){
sqlex.printStackTrace();
}
}
privateVectorgetNextRow(ResultSetrs,ResultSetMetaDatarsmd)
throwsSQLException
{
VectorcurrentRow=newVector();
for(inti=1;i<=rsmd.getColumnCount();++i)
currentRow.addElement(rs.getString(i));/
/返回一条记录
returncurrentRow;
}
publicvoidshutDown()
{
try{
//断开数据库连接
connection.close();
}
catch(SQLExceptionsqlex){
System.err.println("Unabletodisconnect");s
qlex.printStackTrace();
}
}
publicstaticvoidmain(Stringargs[])
{
finalinensshowapp=newinensshow();
app.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente)
{
app.shutDown();
System.exit(0);
}
}
);
}
}
------------------------------------------------------------
这在WIN98中就不好使了。因为MySQL的驱动程序没有也没能加入到CLASSPATH中,但JSP却可以使用(JSP的98驱动加载详见Jsp与Mysql连接查错文章),这次是在XPServer中测试的。Java连接MySQL成功。
|
|