ホームページ > データベース > mysql チュートリアル > java的swing、jtable、连接和操作Access

java的swing、jtable、连接和操作Access

WBOY
リリース: 2016-06-07 15:43:58
オリジナル
1323 人が閲覧しました

java操作access程序这个是源代码 java写windows的程序确实比较不爽 这些代码是给一个兄弟的不会写程序的表妹做的作业(他的要求是必须符合菜鸟的标准:),于是代码就这样了 见谅啦!不过功能是有滴 关键代码 Code // LoadJDBCdriver Class.forName( " sun.jdb

 

java的swing、jtable、连接和操作Accessjava的swing、jtable、连接和操作Access

java操作access程序这个是源代码

java写windows的程序确实比较不爽 这些代码是给一个兄弟的不会写程序的表妹做的作业(他的要求是必须符合菜鸟的标准:……),于是代码就这样了 见谅啦!不过功能是有滴

关键代码

 

java的swing、jtable、连接和操作Accessjava的swing、jtable、连接和操作AccessCode


  
// Load JDBC driver
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  
/* 这里的数据库的url一定要写正确,这是关键,其中DBQ可以绝对路径,也可以是相对路径,为了体现数据存储路径的/独立性,你可以将数据库copy到不同的位试一下 */
  String dbUrl 
= "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=access\\test.mdb";

  Connection con 
= DriverManager.getConnection(dbUrl, "",
    
"");
  Statement state 
= con.createStatement(
    ResultSet.TYPE_SCROLL_SENSITIVE,
    ResultSet.CONCUR_UPDATABLE);
  
// 执行SQL语句
  String sql = "select * from score";
  ResultSet rs 
= state.executeQuery(sql);

  displayResultSet(rs);
  rs.close();
  state.close();
  con.close();

 

 

java的swing、jtable、连接和操作Accessjava的swing、jtable、连接和操作AccessCode
    /***************************************************************************
     * 将数据库中取出的结果以table形式显示
     *************************************************************************
*/
    
private void displayResultSet(ResultSet rs) throws SQLException {
        
boolean moreRecords = rs.next(); // 定位到达第一条记录
        if (!moreRecords) {
            JOptionPane.showMessageDialog(
null"结果集中无记录""无记录",
                    JOptionPane.INFORMATION_MESSAGE);
            
return;
        }

        Vector rows 
= new Vector();
        Vector columnHeads 
= new Vector();
        
try {
            ResultSetMetaData rsmd 
= rs.getMetaData(); // 获得rs结果集中列属性信息
            for (int i = 1; i  rsmd.getColumnCount(); ++i)
                columnHeads.addElement(rsmd.getColumnName(i)); 
// 获得列名(将列名存放至向量columnHeads)

            
do {
                rows.addElement(getNextRow(rs, rsmd));
            } 
            
while (rs.next()); // 利用循环获得所有记录
            jTable = new JTable(rows, columnHeads); // 将获得的行列数据信息作为参数重新构造表格视图
            jTable.setSize(new Dimension(38381));
            JScrollPane scroller 
= new JScrollPane(jTable);// 创建带有滚动条的面板,并将表格视图加入
            Container c = getContentPane(); // 获取溶器
            
// c.remove(2); //
            
// 从溶器中移除指定控件(本窗体中有二级面板有两个,第一个存放文本域及按钮,第二个存放表格视图,故移除1)
            c.add(scroller, BorderLayout.CENTER); // 将面板重新加入溶器中
            c.validate(); // 验证此容器及其所有子组件
        } catch (SQLException e) {
            e.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; // 返回记录
    }

 

以上代码实现连接access并将取出数据显示在JTable控件上……

选择JTable行:jTable.getSelectedRow() != -1用于判断是否有选中行;(jTable.getModel().getValueAt(jTable
        .getSelectedRow(), 0)).toString();用于取出选择行的某单元值(0表示该行的第一列以此类推)

     if (jTable.getSelectedRow() != -1) {
      String ID = (jTable.getModel().getValueAt(jTable
        .getSelectedRow(), 0)).toString();

用于插入acces数据时

"insert into score (name,language,math,english) values(……)“ 标红色的表名后必须加空格,不然无法插入!

 

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート