配色: 字号:
一个Java连接MySQL数据库的代码
2013-01-25 | 阅:  转:  |  分享 
  


一个通过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成功。

























献花(0)
+1
(本文系liyi039首藏)