columnNames.addElement(metaData.getColumnLabel(num+1));
}//循环生成
while(rs.next()){
VectornewRow=newVector();/*for循环,将结果集中一行数据放到newRow矢量中*/
for(inti=1;i<=number;i++){
newRow.addElement(rs.getObject(i));
}/*将上面的矢量newRow作为矢量rows中的一个元素,这样rows中的一个元素就代表结果集中的一行数据*/
rows.addElement(newRow);//增长行
myTable=newDefaultTableModel(rows,columnNames);//在表格中加载数据
}
}catch(SQLExceptionex){
}
table=newJTable(myTable);
jscrollpane=newJScrollPane(table);
jscrollpane.setViewportView(table);
jscrollpane.revalidate();
jPanel3.setLayout(newBorderLayout());
jPanel3.add(jscrollpane,BorderLayout.CENTER);
jPanel3.setVisible(true);
效果如下:
三、修改模块:
首先对所需修改的员工信息进行查询,并显示在修改界面上,关键代码如下:
Connection1db=newConnection1();
Connectioncon=db.getConnection();//连接数据库
Stringsql="select*fromsellInfo";
Statementps=con.createStatement();
ResultSetrs=ps.executeQuery(sql);//查询
while(rs.next()){
if(rs.getString("员工编号").equals(jTextField1.getText())){
//匹配该员工的信息;
num1=rs.getString("员工编号");
num2=rs.getString("商品编号");
num3=rs.getInt("商品数目");
price1=rs.getInt("应付金额(元)");
price2=rs.getInt("顾客付款(元)");
price3=rs.getInt("找回金额(元)");
}
}
jTextField2.setText(num1);
jTextField3.setText(num2);
jTextField4.setText(""+num3);
jTextField5.setText(""+price1);
jTextField6.setText(""+price2);
jTextField7.setText(""+price3);//在修改界面上显示该员工销售的信息
}
然后在对修改界面上的信息进行修改,并返回保存至数据库,关键代码如下:
Stringsql="updatesellInfoset员工编号='"+num1+"',商品编号='"+num2+"',商品数目="+num3+",应付金额(元)="+price1+",顾客付款(元)="+price2+",找回金额(元)="+price3+"where员工编号='"+num1+"'";
try{
ps=con.createStatement();
ps.executeUpdate(sql);//数据更新
}catch(SQLExceptione){
e.printStackTrace();
}
效果如下:
四、删除模块:
首先对用户输入的员工编号或者员工名称进行查找,当数据库中由此数据时,显示该数据,并请求用户是否确定删除,运用sql语句中的delete,以员工基本信息为例,关键代码如下:
Statementps=con.createStatement();
ResultSetrs=ps.executeQuery(sql);
while(rs.next()){
if(rs.getString("员工编号").equals(jTextField1.getText())
||rs.getString("员工名").equals(jTextField2.getText())){
num1=rs.getString("员工编号");
num2=rs.getString("员工名");
i=rs.getInt("年龄");
num3=rs.getString("性别");
num4=rs.getString("部门");
num5=rs.getString("职务");
}
}
}
ints=JOptionPane.showConfirmDialog(null,"确定要删除此数据吗?
\t\n员工编号:
"+jTextField1.getText()+"\t\n"+"员工名:
"+num2+"\t\n"
+"年龄:
"+i+"(岁)"+"\t\n"+"性别:
"+num3+"\t\n"
+"部门:
"+num4+"\t\n"+"职务:
"+num5+"\t");//显示对话框是否确定删除
if(s==0){
Stringjk=jTextField1.getText();
Stringjk1=jTextField2.getText();
Stringsql1="deletefromstaffInfowhere员工编号='"+jk
+"'or员工名='"+jk1+"'";
Statementps1;
try{
ps1=con.createStatement();
ps1.execute(sql1);//执行删除
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
效果如下:
五、添加模块:
添加数据到数据库主要用的是sql中的insert语句,在数据中增加所需数据,这期间要特别注意语句中的变量与引号的问题,以员工销售表为例,关键代码如下:
Stringnum1=jTextField1.getText();
Stringnum2=jTextField2.getText();
intii=Integer.valueOf(jTextField3.getText());
intprice1=Integer.valueOf(jTextField4.getText());
intprice2=Integer.valueOf(jTextField5.getText());
intprice3=Integer.valueOf(jTextField6.getText());
Stringsql="insertintosellInfovalues('"+num1+"','"+num2
+"','"+ii+"','"+price1+"','"+price2+"','"+price3
+"')";
PreparedStatementps=con.prepareStatement(sql);
ps.executeUpdate();//执行并更新语句
效果如下:
六、查询模块:
查询方式主要有两种:
一是精确查找,通过用户所输入的编号,名称进行查找;二是模糊查找,通过用户所输入的模糊信息进行查找,输出所有符合的结果。
1.精确查找关键代码如下:
Stringsql="select*fromgoodsInfo";
Stringnum1=null,name=null;
intnum2=0;
Statementps=con.createStatement();
ResultSetrs=ps.executeQuery(sql);
while(rs.next()){
if(rs.getString("商品编号").equals(jTextField1.getText())
||rs.getString("商品名称").equals(jTextField2.getText())){
num1=rs.getString("商品编号");
name=rs.getString("商品名称");
num2=rs.getInt("商品单价(元)");
}
}
2.模糊查询关键代码如下:
Stringnum1=jTextField3.getText(),num2=jTextField4.getText(),num3=jTextField5.getText();
if(num1.equals("")&&num2.equals("")&&num3.equals("")){
GoodsInfogi=newGoodsInfo();
gi.getGoodsInfo();//如果全部为空,则显示所有数据
}elseif(!
num1.equals(null)||!
num2.equals(null)||!
num3.equals(null)){
Statementps;
ps=con.createStatement();
ResultSetrs;
rs=ps.executeQuery("select*fromgoodsInfowhere商品编号like'"+num1+"%'and商品名称like'"+num2+"%'and商品单价(元)like'"+num3+"%'");
效果如下:
精确查找:
输入商品编号:
201204,显示结果如下:
模糊查找:
输入商品编号:
20120,显示结果如下:
七、打印模块:
打印信息表主要将修改好的数据输出称excel的形式,保存在电脑里,以staffInfo为例,
String[]title={"员工编号","员工名","年龄","性别","部门","职务"};//准备设置excel工作表的标题
StringfilePath="D:
\\staffInfo.xls";//输出的excel的路径
OutputStreamos=newFileOutputStream(filePath);//创建Excel工作薄
WritableWorkbookwwb=Workbook.createWorkbook(os);
//添加第一个工作表并设置第一个Sheet的名字
WritableSheetsheet=wwb.createSheet("员工基本信息表",0);
Labellabel=null;
for(inti=0;i
//Label(x,y,z)其中x代表单元格的第x+1列,第y+1行,单元格的内容是y//在Label对象的子对象中指明单元格的位置和内容
label=newLabel(i,0,title[i]);//将定义好的单元格添加到工作表中
sheet.addCell(label);
}
Statementstmt=con.createStatement();
ResultSetresult=stmt.executeQuery("select*fromstaffInfo");//查询表中的所有数据
intx=0;
while(result.next()){//从数据库中取得数据
x++;//控制行数
for(inty=0;y
label=newLabel(y,x,result.getString(y+1));
//x代表行,y代表列,通过rst.getString()设置单元格内容
sheet.addCell(label);//将内容加到execl中去
}
}
wwb.write();//写入数据
wwb.close();//关闭文件
保存效果如下:
关键代码如下:
OutPutExloe1=newOutPutExl();
oe1.OutPutExlstaff();
JOptionPane.showMessageDialog(null,"输出打印员工基本信息表成功!
保存在D:
staffInfo");
八、登陆界面:
Login.Java
首先连接数据库,并判断用户所输的用户名,密码是否正确,如果匹配则让其通过,否则提示用户名与密码不匹配,请重新输入。
判断方法queryUser语句如下:
booleanqueryUser(StringuserName,Stringpass){
Connection1db=newConnection1();
Connectioncon=db.getConnection();
Stringsql="select*frompasswordwhereUsername='"+userName+"'andPassword='"+pass+"'";
try{
Statementps=con.createStatement();
ResultSetrs=ps.executeQuery(sql);
if(rs.next()){
if(rs.getString("Username").equals(userName)&&rs.getString("Password").equals(pass))
returntrue;
else
returnfalse;
}else
returnfalse;
登录如下:
(4)系统的使用说明:
设备支持:
推荐配置:
Windows7,512内存。
数据库:
MySQLServer5.0。
软件支持:
MyEclipse编写。
(5)日志:
课程设计第一天:
进行整体的布局构思,创建员工信息表、商品信息表、员工销售信息表连接数据库,实现