Java之JTree

面向程序员的JDBC API可以完成以下主要任务

1.首先建立和数据源的连接

2.然后向其传送查询和修改等SQL命令

3.最后处理数据源返回的SQL执行的结果

一个基本的JDBC程序开发包含如下步骤:
1.设置环境,引入相应的JDBC类
2.选择合适的JDBC驱动程序并加载
3.分配一个Connection对象
4.分配一个Statement对象
5.用该Statement对象进行查询等操作
6.从返回的ResultSet对象中获取相应的数据
6.关闭Connection

在Java程序中引入相应的类和包。任何使用JDBC的源程序都需要引入java.sql包,

如必要的时候还需要装载相应的JDBC-ODBC驱动程序的包
import java.sql.*;
import sun.jdbc.odbc.JdbcOdbcDriver;

装载驱动器,用Class.forName方法显式装载驱动程序,如:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

需要注意的是,如果驱动器类有可能不存在,使用此方法就可能会抛出ClassNotFoundException异常,因此需要捕获这个异常:
try{ 

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}catch(ClassNotFoundException e)

{

 System.out.println(e.getMessage);

建立与数据库的连接,调用DriverManager.getConnection()方法。例如,我们要连接上一节创建的数据库,语句如下:
Connection con = DriverManager.getConnection(“jdbc:odbc:DSN名称”, “用户名”,“密码");
将返回与指定数据库建立的连接
该方法有三个字符串参数
第一个是JDBC URL,格式为 jdbc:子协议:子名称
Jdbc表示协议,JDBC URL 中的协议总是 jdbc;
子协议是驱动器名称;
子名称是数据库的名称,如果是位于远程服务器上的数据库,则还应该包括网络地址,//主机名:端口/数据库名
第二个是访问数据库所需的用户名
第三个是用户密码
Connection是一个接口,表示与指定数据库的连接
DriverManager类位于JDBC的管理层,作用于用户和驱动程序之间。它负责跟踪在一个系统中所有可用的JDBC驱动程序,

并在数据库和相应驱动程序之间建立连接

项目名称右键->Build Path->Configure Build Path->Libraries->Add External JARS加载驱动程序包(可以到对应数据库官网中下载)


Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”); //加载驱动器


Connection dbConn = DriverManager.getConnection(“jdbc:sqlserver://服务器地址; DatabaseName=数据库名称”, “用户名”, “密码”);

废话不多说,直接上代码:




import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


public class SQLHelper {


private String ServerName="127.0.0.1";
private String DataBaseName="TestDB";
private String DSN="fxk";
private String UserName="lx";
private String UserPassword="1234";
private Connection conn;
private Statement stm;
public SQLHelper()
{
try
{
//加载驱动程序
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//连接数据库
conn=DriverManager.getConnection("jdbc:sqlserver://"+ServerName+"; DatabaseName="+DataBaseName,UserName,UserPassword);
//创建Statement对象
stm=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch(Exception ex)
{

}
}
public SQLHelper(String tmp)
{
try
{
//加载驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//连接数据库
conn=DriverManager.getConnection("jdbc:odbc:"+DSN,UserName,UserPassword);
//创建Statement对象
stm=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch(Exception ex)
{

}
}
public long Update(String SQL)
{
try
{
return stm.executeUpdate(SQL);
}
catch(Exception ex)
{
return -1;
}
}
public ResultSet Query(String SQL)
{
try
{
return stm.executeQuery(SQL);
}
catch(Exception ex)
{
return null;
}
}
public void Close()
{
try
{
stm.close();
conn.close();
}
catch(Exception ex)
{

}
finally
{
stm=null;
conn=null;
}
}
}



/*
 * MyTree.java
 *
 * Created on __DATE__, __TIME__
 */


package cn.edu.sicnu.cs.testdb2;


import java.sql.ResultSet;


import javax.swing.JOptionPane;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;


/**
 *
 * @author  __USER__
 */
public class MyTree extends javax.swing.JFrame {
SQLHelper helper = null;


/** Creates new form MyTree */
public MyTree() {
initComponents();


helper = new SQLHelper();
CreateTreeNode();
}


//创建一个方法来加载数据到Tree上
private void CreateTreeNode() {
try {
//连接并获得tblXyxx中的数据
String sqlString = "select Xydm,Xymc from tblXyxx";
ResultSet rs = helper.Query(sqlString);
//创建Tree的节点
DefaultMutableTreeNode tnTop = new DefaultMutableTreeNode("00_学院信息");
if (rs != null) {
String nodeString = "";
while (rs.next()) {
nodeString = rs.getString("Xydm") + "_"
+ rs.getString("Xymc");
DefaultMutableTreeNode tnNode = new DefaultMutableTreeNode(
nodeString);
tnTop.add(tnNode);
}
}
DefaultTreeModel newModel = new DefaultTreeModel(tnTop);
jtrXyxx.setModel(newModel);
} catch (Exception ex) {


}
}


/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {


jScrollPane1 = new javax.swing.JScrollPane();
jtrXyxx = new javax.swing.JTree();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jtfXydm = new javax.swing.JTextField();
jtfXymc = new javax.swing.JTextField();
jcbXyState = new javax.swing.JCheckBox();
jbnAddNew = new javax.swing.JButton();
jbnModify = new javax.swing.JButton();
jbnDelete = new javax.swing.JButton();


setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);


jtrXyxx.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
jtrXyxxValueChanged(evt);
}
});
jScrollPane1.setViewportView(jtrXyxx);


jLabel1.setText("Xydm:");


jLabel2.setText("Xymc:");


jcbXyState.setText("XyState");


jbnAddNew.setText("AddNew");
jbnAddNew.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbnAddNewActionPerformed(evt);
}
});


jbnModify.setText("Modify");
jbnModify.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbnModifyActionPerformed(evt);
}
});


jbnDelete.setText("Delete");
jbnDelete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbnDeleteActionPerformed(evt);
}
});


..............


private void jbnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
String Xydm = jtfXydm.getText().trim();
if (Xydm.equals("")) {
throw new Exception("请输入学院代码");
}
String sqlString="DELETE FROM tblXyxx WHERE Xydm='"+Xydm+"'";

long returnValue = helper.Update(sqlString);
if (returnValue <= 0) {
throw new Exception("该学院代码不存在");
}
JOptionPane.showMessageDialog(this, "删除数据成功");
jtfXydm.setText("");
jtfXymc.setText("");
CreateTreeNode();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getMessage());
}
}


private void jtrXyxxValueChanged(javax.swing.event.TreeSelectionEvent evt) {
// TODO add your handling code here:
try {
String nodeString = jtrXyxx.getSelectionPath()
.getLastPathComponent().toString();
String Xydm = nodeString.substring(0, 2);
//String sqlString="select Xydm,Xymc,XyState from tblXyxx where Xydm = '01'";
//String sqlString="select Xydm,Xymc,XyState from tblXyxx where Xydm = '"+"01"+"'";
String sqlString = "select Xydm,Xymc,XyState from tblXyxx where Xydm = '"
+ Xydm + "'";
ResultSet rs = helper.Query(sqlString);
if (rs != null) {
if (rs.next()) {
jtfXydm.setText(Xydm);
jtfXymc.setText(rs.getString("Xymc"));
jcbXyState.setSelected(rs.getBoolean("XyState"));
}
}
} catch (Exception ex) {


}
}


private void jbnModifyActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
String Xydm = jtfXydm.getText().trim();
if (Xydm.equals("")) {
throw new Exception("请输入学院代码");
}
String Xymc = jtfXymc.getText().trim();
if (Xymc.equals("")) {
throw new Exception("请输入学院名称");
}
String XyState = jcbXyState.isSelected() ? "1" : "0";


String sqlString = "UPDATE [dbo].[tblXyxx]";
//sqlString+="SET [Xymc] = '高级法学院'";
//sqlString+="SET [Xymc] = '"+"高级法学院"+"'";
sqlString += "SET [Xymc] = '" + Xymc + "'";
sqlString += ",[XyState] = " + XyState;
sqlString += "WHERE Xydm='" + Xydm + "'";


long returnValue = helper.Update(sqlString);
if (returnValue <= 0) {
throw new Exception("该学院代码不存在");
}
JOptionPane.showMessageDialog(this, "修改数据成功");
CreateTreeNode();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getMessage());
}
}


private void jbnAddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
String Xydm = jtfXydm.getText().trim();
if (Xydm.equals("")) {
throw new Exception("请输入学院代码");
}
String Xymc = jtfXymc.getText().trim();
if (Xymc.equals("")) {
throw new Exception("请输入学院名称");
}
String XyState = jcbXyState.isSelected() ? "1" : "0";


String sqlString = "INSERT INTO [dbo].[tblXyxx]";
sqlString += "([Xydm]";
sqlString += ",[Xymc]";
sqlString += ",[XyState])";
sqlString += "VALUES";
//sqlString+="('03'";
//sqlString+="('"+"03"+"'";
sqlString += "('" + Xydm + "'";


//sqlString+=",'外国语学院'";
//sqlString+=",'"+"外国语学院"+"'";
sqlString += ",'" + Xymc + "'";


//sqlString+=",1)";
//sqlString+=","+"1"+")";
sqlString += "," + XyState + ")";
long returnValue = helper.Update(sqlString);
if (returnValue == -1) {
throw new Exception("该学院代码在数据库已经存在");
}
JOptionPane.showMessageDialog(this, "添加数据成功");
CreateTreeNode();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getMessage());
}


}


/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyTree().setVisible(true);
}
});
}


//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton jbnAddNew;
private javax.swing.JButton jbnDelete;
private javax.swing.JButton jbnModify;
private javax.swing.JCheckBox jcbXyState;
private javax.swing.JTextField jtfXydm;
private javax.swing.JTextField jtfXymc;
private javax.swing.JTree jtrXyxx;
// End of variables declaration//GEN-END:variables


}



import java.sql.ResultSet;


import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;


/**
 *
 * @author  __USER__
 */
public class MyTable extends javax.swing.JFrame {
SQLHelper helper=new SQLHelper();
/** Creates new form MyTable */
public MyTable() {
initComponents();
GetTableData();
}
private void GetTableData()
{
try
{
String sqlStrig ="Select Xydm,Xymc,XyState From tblXyxx Where XyState = 1";
ResultSet rs=helper.Query(sqlStrig);
if(rs==null)
{
throw new Exception("获取数据失败");
}
rs.last();
int RowCount=rs.getRow();
Object[][] data=new Object[RowCount][3];
rs.first();
for(int i=0;i<RowCount;i++)
{
data[i][0]=rs.getString("Xydm");
data[i][1]=rs.getString("Xymc");
data[i][2]=rs.getBoolean("XyState");
rs.next();
}
String[] ColumnTitle=new String[]{"学院代码","学院名称","学院状态"};
jtbXyxx.setModel(new DefaultTableModel(data,ColumnTitle));
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(this, ex.getMessage());
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {


jScrollPane1 = new javax.swing.JScrollPane();
jtbXyxx = new javax.swing.JTable();


setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);


jtbXyxx.setModel(new javax.swing.table.DefaultTableModel(
new Object[][] { { null, null, null, null },
{ null, null, null, null }, { null, null, null, null },
{ null, null, null, null } }, new String[] { "Title 1",
"Title 2", "Title 3", "Title 4" }));
jScrollPane1.setViewportView(jtbXyxx);


javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 375,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(15, Short.MAX_VALUE)));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 275,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(25, Short.MAX_VALUE)));


pack();
}// </editor-fold>
//GEN-END:initComponents


/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyTable().setVisible(true);
}
});
}


//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jtbXyxx;
// End of variables declaration//GEN-END:variables


}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值