当前位置: 首页 >> 应用软件 >> 数据库 >> Java数据库编程中查询结果的表格式输出
 

Java数据库编程中查询结果的表格式输出

作者:zhanghailong (zhanghailong2008x@126.com)     来源:     发表时间:2007-01-07     浏览次数:      字号:    

江西财经大学用友软件学院:张海龙
邮箱:zhanghailong2008x@126.com
Java数据库编程中查询结果的表格式输出
对新手来说,Java数据库编程存在着许多问题,下面以数据库服务器sql 2000,编程软件eclipse,jdk1.5.8为例来说明java连数据库的总过程,并把查询结果以表格的形式显示出来!
首先,你的sql2000必须打一个sp3或sq4服务包,只有这样,你的端口1433才能打开,否则就连接不上数据库服务器sql 2000;当sq3或sq4包打好了之后,你必须安装jdbc驱动程序,在它的lib子目录下包含了3 个jar文件,msbase.jar;mssqlserver.jar;msutil.jar;你必须把它们导入到你的eclipse集成开发环境中,具体安装为:在eclipse 的构建路径-----添加外部归档中选择这三个文件,把它导入到开发项目中,这样就配置好了jdbc连接数据库服务器sql 2000的环境!
解决了上述问题后,接下来的便是连接sql 2000,并且把查询结果用表格输出的问题了。下面以数据库pubs,表titles为例来讲述数据库的不格显示
package 界面;//包名,可以缺省
import java.awt.*;
import javax.swing.*;
public class test extends JFrame {
 private controls1 control;//数据库表格控件类,内集成了表格操作的全部功能
 private JScrollPane scroll;
 public test() {
  this.setTitle("连接数据库");
  control=new controls1("pubs","titles","sa","1");//pubs数据库名,titles表名,sa用户名,1为密码
  scroll=new JScrollPane(control);//表格可以滚动
  this.getContentPane().setLayout(new BorderLayout());
  this.getContentPane().add(scroll,BorderLayout.CENTER);
 }
 public static void main(String[] args) {
  test frame=new test();
  frame.pack();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);
 }

}
运行结果为
第一行黑体为字段名,下面1-18显示的是记录,外部调用就一个构造函数 controls1 control=new controls1("pubs","titles","sa","1")//pubs数据库名,titles表名,sa用户名,1为密码
下面再举一些例子来说明这个控件,还是以数据库pubs 为例,它下属有表
"titles","titleauthor","stores","sales","roysched","publishers","pub_info","jobs","employee","discounts","authors"
现在对数据库表与表格进行操作 ,其中包括对表格的插入,删除,修改,更新请看源程序
package 界面;//包名,可缺省

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class databaseFrame extends JFrame implements ActionListener, ItemListener {
 private JButton add,remove,laws,submit,update;//增加,删除,修改,提交,刷新
 private String[]table={"titles","titleauthor","stores","sales","roysched","publishers","pub_info","jobs","employee","discounts","authors"};//表名
 private JComboBox combox;//表名组全框
 private controls1 control;//数据库控件类
 private JScrollPane scroll;//表格可滚动
 private String s;//选定的表名
 public databaseFrame() {//构造函数
  JPanel p=new JPanel(new GridLayout(6,1,10,20));
  add=new JButton("增加");
  remove=new JButton("删除");
  laws=new JButton("修改");
  submit=new JButton("提交");
  update=new JButton("刷新");
  combox=new JComboBox(table);
  p.add(combox);
  p.add(add);
  p.add(remove);
  p.add(laws);
  p.add(submit);
  p.add(update);
  p.setBorder(new LineBorder(Color.black,1));
  control=new controls1("pubs","titles","sa","1");
  scroll=new JScrollPane(control);
  this.getContentPane().setLayout(new BorderLayout());
  this.getContentPane().add(p,BorderLayout.EAST);
  this.getContentPane().add(scroll,BorderLayout.CENTER);
  add.addActionListener(this);
  remove.addActionListener(this);
  laws.addActionListener(this);
  submit.addActionListener(this);
  update.addActionListener(this);
  combox.addItemListener(this);
  this.setBounds(200, 100, 600, 500);
  this.setTitle("数据库");
  this.setVisible(false);
 }
 public void actionPerformed(ActionEvent e) {
  String click=e.getActionCommand();
  if("增加".equals(click)){
   control.addRow();//增加一行
   add.setEnabled(false);
   remove.setEnabled(false);
   laws.setEnabled(false);
   submit.setEnabled(true);
   update.setEnabled(false);
  }
  else if("删除".equals(click)){
   control.removeRow();//删除一行
   add.setEnabled(false);
   remove.setEnabled(false);
   laws.setEnabled(false);
   submit.setEnabled(false);
   update.setEnabled(true);
  }
  else if("修改".equals(click)){
   control.sqlUpdate();//修改一行
   add.setEnabled(false);
   remove.setEnabled(false);
   laws.setEnabled(false);
   submit.setEnabled(false);
   update.setEnabled(true);
  }
  else if("提交".equals(click)){
   control.sqlAddRow();//提交一行
   submit.setEnabled(false);
   update.setEnabled(true);
  }
  else{
   add.setEnabled(true);
   remove.setEnabled(true);
   laws.setEnabled(true);
   submit.setEnabled(true);
   update.setEnabled(true);
   control=new controls1("pubs",s,"sa","1");//刷新
   scroll.setViewportView(control);
   scroll.validate();
  }
 }
 public void itemStateChanged(ItemEvent e) {
  s=(String)e.getItem();
  control=new controls1("pubs",s,"sa","1");
  scroll.setViewportView(control);
  scroll.validate();

 }
 public static void main(String[] args) {
  databaseFrame frame=new databaseFrame();
  frame.setSize(600,500);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);
 }
}
请看运行结果
首先,我们来看控件的增加一行的功能,首先,点击增加按扭,马上调用control.addRow(),在其表格的尾部添加新的一行,运行如图所示
在其空白地方输入数据,点击提交按扭,马上调用control.sqlAddRow();如果提交成功,则弹出消息对话框成功,否则失败
再点击刷新按扭,调用构造函数
control=new controls1("pubs",s,"sa","1");重新连接表,即可得到刷新效果,
再来看表行的删除,首先选定一行记录,点击删除按扭,调用control.removeRow(),如果删除成功,则弹出对话框成功,否则失败,运行如下
 
再点击刷新按扭
再来看表行的的修改,先选定一行,修改了某个地方后,再点击修改按扭,调用control.sqlUpdate(),弹出对话框成功与否,再点击刷新按扭,运行如下
再点击刷新按扭,重新调用构造函数control=new controls1("pubs",s,"sa","1")
Controls1的主要属性
private JLabel[] jhlabels,jvlabels;//列标签,行标签
 private JTextField[][]  txts;//二维文本框
 private int row=0;//初始行数
 private int column=0;//初始列数
 private String[] chrs;//列标签名称
 private GridBagLayout grid;
 private GridBagConstraints cons;
 private String database,table,username,pwd;//数据库名,表名,用户名,密码
 private String sql;//sql语句
 private boolean backrow,backcol;
 private int selectrow,selectcolumn;//选定的行与列
 private Connection con;
 private Statement a;
 private ResultSet b;
 private JLabel newJvlabels,newJhlabels;//新增加的行与列
 private JTextField[] newRowTxts,newColTxts;//新增加的文本框
主要方法:
构造函数
public controls1(String database,String table,String username,String pwd) 功能:连接数据库中的表,并以表格显示出来
参数:1,数据库名。2,表名。3,用户名。4,密码
构造函数
public controls1(String[]a,int row) 功能:生成指定行数,列数的表格,并且指定列标签的名称
参数:1,列标签名数组。2,行数
public void addColumn(String name)功能:在最后一列处添加一列,并生成列标签
参数:列标签名称
public void addColumn(String name,int selectcolumn)
功能:在指定的列位置处旁边添加一列,并生成列标签
参数:1,列标签名称。2,指定的列
public void addRow()
功能:在行的最尾端处添加一行,与public void sqlAddRow()配合使用
public void addRow(int selectrow)
功能:在指定的行的下一行添加一行,与public void sqlAddRow()配合使用
public String[] getchrs()
功能:得到列标签的名称数组
public String getDatabase()
功能:得到数据库的名称
public Dimension getMinimumSize()
功能:得到控件面板的最小尺寸
public Dimension getPerferredSize()
功能:得到控件面板的最合适尺寸
public String getnewRowText(int column)
功能:得到新生成的那一行某一列的值
参数:列位置
public String getPwd()
功能:得到密码
public int getRow()
功能:得到行数
public String getText(int row,int column)
功能 :得到指定行与列的文本值
参数:1,指定行,2,指定列 
public String getUserName()
功能:得到用户名
public void mouseClicked(MouseEvent e)
功能:产生选定行或列,并以颜色的形式显现
public void removeColumn()
功能:删除选定列
public void removeRow()
功能:删除选定行
public void setDatabase(String database)
 功能: 设置数据库名
参数:数据库名
public void setPwd(String pwd)
功能:设置密码
参数:密码
public void setRow(int row)
功能:设置行数
参数:行数
public void setText(String txt,int row,int column)
功能:设置指定行与列位置的文本值
参数:1,文本值。2,指定行。3,指定列
public void setUserName(String username)
功能:设置用户名
参数:用户名
public void sqlAddRow()
功能:把新生成的一行的数据写到数据库的表中
public void sqlUpdate()
功能:更新表

责任编辑 zhanghailong

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •