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