PDA

View Full Version : Khắc phục lỗi Bad value for type int trong Postgre



luong.minhson
16-05-2015, 11:16
Mình đang làm đồ án về quản lý cửa hàng. Khi mình làm chức năng tìm kiếm.
cụ thể:
- Mình viết trong cuahangDAO chức năng tìm kiếm như sau:

Cụ thể bảng sản phẩm


CREATE TABLE san_pham_he_thong
(
tensanpham text,
soluong integer,
dongia double precision,
masanpham bigint NOT NULL DEFAULT nextval('san_pham_masanpham_seq'::regclass),
manhacungcap bigint,
maloaisp bigint,
trangthai integer NOT NULL DEFAULT 1,
thongtinsp text,
ngaynhap date,
ngaycapnhat date,
CONSTRAINT san_pham_pkey PRIMARY KEY (masanpham)
)


cuahangDAO



public static ArrayList<cuahangPojo> Find_Cuahang_byId(int ma) throws SQLException {
ArrayList<cuahangPojo> dsch = null;
Connection cn;
cn = PostgreSQLConnectionUtil.getInstance().getConnecti on();

//ResultSet: tao ra bang de do du lieu vao/ket qua cua cau truy van tra ve
ResultSet rs = null;
try {
//viet cau truy van
String sql = "select * from cua_hang where macuahang="+ma+"";
Statement sm = cn.createStatement();
//tao 1 resultset giong nhu 1 bang de chua du lieu
rs = sm.executeQuery(sql);
dsch = new ArrayList<>();
while (rs.next())//doc cac phan tu trong bang
{
//khau bao mot doi tuong khach hang moi
cuahangPojo ch = new cuahangPojo();
//lay du lieu cho nha cungcap moi bang cac cot tuong ung trong bang ket qua ResultSet
ch.setMacuahang(rs.getInt(1));
ch.setTencuahang(rs.getString(2));
ch.setDiachi(rs.getString(3));
ch.setDienthoai(rs.getString(4));
//them du lieu vao trong danh sach
dsch.add(ch);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
return dsch;
}

Trong sự kiện click chuột của button tìm bên Swing


private void btn_TimCHActionPerformed(java.awt.event.ActionEven t evt) {
// TODO add your handling code here:
if(rb_Ma.isSelected()==true)
{
int ma= Integer.parseInt(txt_Keyword.getText());
Vector<String> columnNames = new Vector<String>();
columnNames.addElement("Mã CH");
columnNames.addElement("Tên CH");
columnNames.addElement("Điện thoại");
columnNames.addElement("Địa chỉ");

dftb_dsch = new DefaultTableModel(null, columnNames);
try {
arr_ch = cuahangDAO.Find_Cuahang_byId(ma);
for (cuahangPojo ds : arr_ch) {
Vector v = new Vector();//Vector chứa các dòng dữ liệu của bảng.
v.add(ds.getMacuahang());
v.add(ds.getTencuahang());
v.add(ds.getDienthoai());
v.add(ds.getDiachi());

// đưa dòng dữ liệu vào tableModel để hiện thị lên jtable
dftb_dsch.addRow(v);
}
}
catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
else if(rb_Ten.isSelected()==true)
{
String ten= txt_Keyword.getText();
Vector<String> columnNames = new Vector<String>();
columnNames.addElement("Mã cửa hàng");
columnNames.addElement("Tên cửa hàng");
columnNames.addElement("Điện thoại");
columnNames.addElement("Địa chỉ");

dftb_dsch = new DefaultTableModel(null, columnNames);
try {
arr_ch = cuahangDAO.Find_Cuahang_byName(ten);
//for(int i=0;i<=ncc.length;i++)
for (cuahangPojo ds : arr_ch) {
Vector v = new Vector();//Vector chứa các dòng dữ liệu của bảng.
v.add(ds.getMacuahang());
v.add(ds.getTencuahang());
v.add(ds.getDienthoai());
v.add(ds.getDiachi());

// đưa dòng dữ liệu vào tableModel để hiện thị lên jtable
dftb_dsch.addRow(v);
}
}
catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
}

Và thông báo lỗi: Bad value for type int trong Postgre và không hiện kết quả gì cả. Ai đã từng gặp giúp mình nha. Cảm ơn

luong.minhson
25-05-2015, 12:34
Mình đã tìm ra cách giải quyết vấn đề. Do mình chọn cột không đúng. Đáng ra cột mình cần ở vi trí 1. Nhưn minh để nó vi trí khác nên thành ra lỗi. Coi lai trong code là dươc