图书管理系统 日期处理问题

欧阳帆54 2013-11-03 10:07:12
我目前在做一个图书管理系统,但是在增加书籍那个功能里遇到了问题,首先就是日期,包括书籍出版日期和书籍添加进图书馆的日期,这两个都是在输入框中输入的,也就是字符串类型,要怎样转成Date类型的?是哪个包中的Date类型?util包还是sql包?转换好之后,那个插入语句怎么写?也就是int affectedRow=sta.executeUpdate(str);的str怎么写?下面是这个功能的源码,包括UI设计和事务处理


package com.farsigt.bookmanagesystemUI;

import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
import com.farsigt.workAction.addbookWorkAction;

public class addBookUI extends JPanel implements ActionListener{
private JLabel bookNameLabel,authorLabel,publishdateLabel,
priceLabel,adddateLabel,bookTypeLabel,publishCompanyLabel;
private JTextField bookNameField,authorField,publishdateField,
priceField,adddateField,publishCompanyField;
private JButton registeButton,cancelButton;
private JComboBox bookTypeComboBox;
private DateFormat df;
private Date publishdate,adddate;
public addBookUI() {
df = new SimpleDateFormat("yyyy-MM-dd");
bookNameLabel = new JLabel("书名");
authorLabel = new JLabel("作者");
publishCompanyLabel = new JLabel("出版社");
publishdateLabel = new JLabel("出版日期");
priceLabel = new JLabel("价格");
adddateLabel = new JLabel("添加时间");
bookNameField = new JTextField(10);
authorField = new JTextField(10);
publishdateField = new JTextField(10);
priceField = new JTextField(10);
adddateField = new JTextField(10);
publishCompanyField = new JTextField(10);
bookTypeLabel = new JLabel("书籍类型");
String[] str = {"请选择书籍类别","文学","计算机科学","农业","经济金融","理学","武功秘籍","菜谱","体育学","杂志"};
bookTypeComboBox = new JComboBox(str);
setLayout(new FlowLayout());
add(bookNameLabel);
add(bookNameField);
add(authorLabel);
add(authorField);
add(publishdateLabel);
add(publishdateField);
add(priceLabel);
add(priceField);
add(adddateLabel);
add(adddateField);
add(publishCompanyLabel);
add(publishCompanyField);
add(bookTypeLabel);
add(bookTypeComboBox);
registeButton = new JButton("提交");
cancelButton = new JButton("取消");
adddateField.setText(df.format(new Date()));
add(registeButton);
add(cancelButton);
registeButton.addActionListener(this);
cancelButton.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand() == "提交") {
if(bookNameField.getText().isEmpty() && authorField.getText().isEmpty() &&
publishdateField.getText().isEmpty() && priceField.getText().isEmpty() &&
adddateField.getText().isEmpty() && publishCompanyField.getText().isEmpty()) {
JOptionPane.showMessageDialog(null,"请输入要添加书籍的各种信息!");
}else {
try {
adddate = df.parse(adddateField.getText());
publishdate = df.parse(publishdateField.getText());
addbookWorkAction.addbook(bookNameField,authorField,publishdate,
priceField,adddate,publishCompanyField,bookTypeComboBox.getSelectedItem().toString());
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}else {
setVisible(false);
}
}
}
后面是事务处理的代码


package com.farsigt.workAction;

import java.sql.*;
import javax.swing.*;

public class addbookWorkAction {
static Connection conn;
static Statement sta;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/bookmanagesystem";
conn = DriverManager.getConnection(url,"root","oyf19900716");
sta = conn.createStatement();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void addbook(JTextField bookNameField,
JTextField authorField, java.util.Date d,
JTextField priceField, java.util.Date adddate,
JTextField publishCompanyField,String bookTypeComboBox) {
// TODO Auto-generated method stub
String str = "insert into booktable values(null,'"+bookNameField.getText()+"','"
+authorField.getText()+"','"+ d +"','"+ adddate +"','"+publishCompanyField.getText()
+"','+Double.parseDouble(priceField.getText())+','"+bookTypeComboBox
+"'1,0);";
try {
int affectedRow=sta.executeUpdate(str);
JOptionPane.showMessageDialog(null, "增加信息成功!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(sta != null) {
sta.close();
sta = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

...全文
478 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunbo624 2013-11-04
  • 打赏
  • 举报
回复
按字符串那么写
快乐的小呆 2013-11-04
  • 打赏
  • 举报
回复
引用
String str = "insert into booktable values(null,'"+bookNameField.getText()+"','" +authorField.getText()+"','"+ d +"','"+ adddate +"','"+publishCompanyField.getText() +"','+Double.parseDouble(priceField.getText())+','"+bookTypeComboBox +"'1,0);";
建议不要用这种字符串拼接的方式,用"?"号参数的方式,然后不管是什么类型的(包跨Date类型)都可以直接传入。还有代码中一般使用的是util包中的Date类型。
teemai 2013-11-04
  • 打赏
  • 举报
回复

Date d = new Date("2013/11/4");
		System.out.println(d);
  • 打赏
  • 举报
回复
这个图书馆管理我写过,只写的前台。。。至于日期,后台得到的当然是util包下面的,对于字符串转为util日期,给你个例子:

String dataString = "2013-11-4";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.fomat(dateString);
如果反过来转为String,就用parse方法。。。插入数据库中的语句可以用PreparedStatement。。。传object类型就可以了。。。
mjygz 2013-11-04
  • 打赏
  • 举报
回复
SimpleDateFormat,一直都用util下的包
赏金--猎人 2013-11-04
  • 打赏
  • 举报
回复
为什么要用字符串格式呢,找个日历格式的 代码不难啊,网上有js的代码或者其他的都可以的,到后台想要什么格式都行的啊。 日历格式转成字符串格式容易,字符串转日历格式不容易
钢镚爸爸 2013-11-03
  • 打赏
  • 举报
回复
我是说给你仔细看看 等等啊
钢镚爸爸 2013-11-03
  • 打赏
  • 举报
回复
自己看看 等等啊

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧