已有259人关注
关于sqlserver数据库在jtable上实现分页
发表在Java答疑区 2017-03-25
是否精华
版块置顶:

1,现在我连接sqlserver数据库后,通过jtable显示数据,如何实现分页显示?

package com.cn.test1;


/*

 * 功能:连接数据库,显示报表

 * 作者:towne

 * 日期:2017.03.01

 */

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Vector;


import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTable;


public class Demo2 extends JFrame {

Connection con;

ResultSet rs;

PreparedStatement ps;

JTable tab;

JScrollPane jsp;

Vector rowData,columNames;

String className="com.microsoft.jdbc.sqlserver.SQLServerDriver";

String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=db_database01";

String user="sa";

String pwd="";

public Demo2() {

try {

Class.forName(className);

con=DriverManager.getConnection(url,user,pwd);

//创建表头-列

columNames = new Vector();

columNames.add("编号");

columNames.add("用户");

columNames.add("密码");

//创建行数据

rowData = new Vector();

String sql="select * from tb_user";

ps = con.prepareStatement(sql);

rs = ps.executeQuery();

while(rs.next()) {

Vector row = new Vector();

row.add(rs.getString(1));

row.add(rs.getString(2));

row.add(rs.getString(3));

rowData.add(row);

}

//初始化数据表格

tab = new JTable(rowData,columNames); 

tab.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//

//初始化滚动面板

jsp = new JScrollPane(tab);

this.setTitle("报表显示");

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setBounds(100, 100, 700, 400);

this.getContentPane().add(jsp);

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

public static void main(String[] args) {

Demo2 demo = new Demo2();

}

}


分享到:
精彩评论 2
雨中風情_1481181820
学分:20 LV2
2017-03-25
沙发

请老师们给予指导,最好有代码。谢谢。。。

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2017-03-27
板凳

sqlsever处理分页事务能力比较弱,所以从修改sql语句方面处理会比较麻烦,但Java代码处理也需要修改大量代码,但至少逻辑上是容易理解的。你可以尝试将读取数据的逻辑封装成一个方法,并设计读取的起始位置、读取的个数,例如:

    /**

     *

     * @param start - 数据起始坐标

     * @param count - 读取个数

     * @param sql - sql语句

     * @param con - 连接对象

     * @throws SQLException

     */

    static void paging(int start, int count, String sql, Connection con) throws SQLException {

       Statement stmt = con.createStatement();

       ResultSet rs = stmt.executeQuery(sql);

       int i = 0;// 读取计数器

       while (rs.next()) {

           if (rs.getRow() >= start && i <= count) {// 如果当前行数大于等于起始索引并且计数器小于读取个数

              System.out.println(rs.getRow() + "\t" + rs.getString(1) + "\t" + rs.getString(2));

              i++;// 计数器自增

           } else if (i >= count) {// 超出读取个数

              break;// 停止循环

           }

       }

       rs.close();

       stmt.close();

}


调用的时候,这么写就行:

paging(10,20,"select * from table",con);// 从行号为10的位置读取20行数据

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照