Heim >Datenbank >MySQL-Tutorial >java的swing、jtable、连接和操作Access

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

WBOY
WBOYOriginal
2016-06-07 15:43:581324Durchsuche

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(……)“ 标红色的表名后必须加空格,不然无法插入!

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn