Java中JTable显示数据库的数据

SQL Server数据库中的表如下图1所示,表名为stu_info
                                                  
                                                             图1 表stu_Info

上篇已讲连接SQL server,这里不再赘述。我们直接上代码,有详细注释应该很容易
```java public class QueryJFrame extends JFrame{
private Connection con;//数据库连接
private PreparedStatement pstmt;
private JTable table;//表格
private DefaultTableModel model;//表格数据模型
private JTextField delete_text;//输入框
private JButton delete_button;//按钮
private ResultSet set=null;
//界面初始化
public QueryJFrame() {
	// TODO Auto-generated constructor stub
	this.setBounds(500, 400, 600, 400);
	this.setLayout(null);
	table=new JTable();
	model=new DefaultTableModel();
	table.setModel(model);
	JScrollPane jsp=new JScrollPane(table);
	jsp.setBounds(0, 0, 600, 200);
	this.add(jsp);
	delete_text=new JTextField();
	JLabel jl=new JLabel("第几行:");
	jl.setBounds(120, 220,50,30);
	this.add(jl);
	delete_text=new JTextField();
	delete_text.setBounds(200, 220, 50, 30);
	this.add(delete_text);
	delete_button=new JButton("删除");
	delete_button.setBounds(280, 220, 70, 30);
	this.add(delete_button);
	this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	this.setVisible(true);
	try{
	initConnection();
	queryData();
	}catch(Exception e){
		e.printStackTrace();
	}
	addListenter();
}
//初始化数据库连接
public void initConnection()throws Exception{
	//驱动
	String drivename="com.microsoft.sqlserver.jdbc.SQLServerDriver";
	//地址,dateName为数据库名
	String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=hwm_test";
	//用户密码
	String username="sa";
	String pess_word="****";
	getClass().forName(drivename);
	//获取连接
	con=DriverManager.getConnection(dbURL,username,pess_word);
	if(con!=null){
		System.out.println("success");
		
		}
	else
		System.out.println("fail");
}
//关闭数据库连接
public void closeCon(){
	try{
	if(pstmt!=null)
		pstmt.close();
	if(con!=null)
		con.close();
	}catch(Exception e){
		e.printStackTrace();
	}
}

//查询数据
public void queryData()throws Exception{
	String sql="select * from stu_info";
   //执行查询语句获取结果
	pstmt=con.prepareStatement(sql);
	set=pstmt.executeQuery();
	
	//获取表中列数及列名,作为表格组件的标题
	ResultSetMetaData rsmd=set.getMetaData();
	//获得列数
	int count=rsmd.getColumnCount();
	将列名添加到表格模型作为标题
	for(int i=1;i<=count;i++){
		model.addColumn(rsmd.getColumnName(i));
	}
	//每行设置一个数组
	String[] row=new String[count];
	while(set.next()){
		//将查询到的每行数据赋入数组内
		for(int i=0;i<count;i++)
			row[i]=set.getString(i+1);
		//增加一行
		model.addRow(row);
	}
	//关闭连接
	set.close();
	
}

public void addListenter(){
	delete_button.addActionListener(new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			try{
				//获取要删除的行数
				int row=Integer.parseInt(delete_text.getText());
				//获取要删除的行的学生id号
				String stu_id=(String)model.getValueAt(row-1, 0);
				//从数据库删除数据
				String sql="delete from stu_info where stu_Id=?";
				pstmt=con.prepareStatement(sql);
				pstmt.setString(1,stu_id);
				if(pstmt.executeUpdate()==1){
					System.out.println("删除成功");
					//本地删除数据
					model.removeRow(row-1);}
				else
					System.out.println("删除失败");
			}catch(Exception a){
				System.out.println("删除数据出错");
				a.printStackTrace();
			}
		}
	});
}
public static void main(String[] args) {
	// TODO Auto-generated method stub
	new QueryJFrame();
}

}```

运行结果如下图2所示
                        
                                                                             图 2

    我们成功的将数据添加入table中,实际中可将查询到的数据建立studentInfo的Bean中。我们在输入框中删除第几行(这里没有检测输入的行数是否符合,可自行加入),删除成功如图3,到数据库中刷新stu_info表即可看到数据已成功删除!
       如需添加数据可自行实现该功能(有点懒(づ ̄ 3 ̄)づ),此外上述代码没有关闭数据库连接,需要关闭则调用函数即可       

                                 
                                                                                图3
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值