求助~~!java:简单超市管理系统出错:java.sql.SQLException: Column not found

yadekar 2011-05-23 07:43:06
不清楚在那出错, 就是要Table 显示出数据库里面的所有记录, 但显示不出来, 报错误,错误就是:java.sql.SQLException: Column not found


我的源代码如下, 请各位高手帮个忙,指示好吗, 我是刚开始学JAVA的。。。感激不尽~~~~~~~~~~
数据库是:access数据库, 有两个表, 一个是:admin 是用户表; 另一个是:market是商品表;
admin 表有两个字段:用户名和密码;
market 表有6个字段:序号,商品名称,商品类别,商品价格,进货价格,保质期和备注;


import java.awt.*;
//import java.lang.*;
import javax.swing.*;
import java.awt.event.*;
//import javax.swing.border.*;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.table.DefaultTableModel;
//import javax.swing.table.TableColumn;
import java.sql.*;

import java.awt.GridLayout;


public class kader {

public kader() {

}
public static void main(String[] args) {
// TODO code application logic here
loginFrame lf=new loginFrame();
lf.setVisible(true);
lf.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}


//主界面
class mainFrame extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
JPanel p1=new JPanel();
JButton b=new JButton();
JButton b1,b2,b3,b4;

public JTable table = new JTable();
public DefaultTableModel mm ;

public mainFrame(){
p1=new JPanel();
b1=new JButton("添加");
b2=new JButton("删除");
b3=new JButton("修改");
b4=new JButton("查找");

p1.setLayout(null);
p1.setSize(440, 110);
p1.setVisible(true);
p1.setLocation(30,440);
//button1
b1.setSize(80, 40);
b1.setVisible(true);
b1.setLocation(0,10);
p1.add(b1);
///button2
b2.setSize(80, 40);
b2.setVisible(true);
b2.setLocation(110,10);
p1.add(b2);
///button3
b3.setSize(80, 40);
b3.setVisible(true);
b3.setLocation(220,10);
p1.add(b3);
///button4
b4.setSize(80, 40);
b4.setVisible(true);
b4.setLocation(330,10);
p1.add(b4);
this.add(p1);

table.setSize(500,440);
table.setVisible(true);

String[] col = {"序号","商品名称","商品类别","商品价格","进货价格","质保期","备注"};//创建属性列名
mm= new DefaultTableModel(col,0);
table.setModel(mm);
JScrollPane tableScrollPane = new JScrollPane(table);

this.add(tableScrollPane);

b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);

}


public void freshTable(String sql){
myConnection conn=new myConnection();
ResultSet rs;
rs=conn.getResult(sql);
if (rs!=null){
try{
mm.setRowCount(0);
table.setModel(mm);
//this.freshTable("select * from market");
while(rs.next()){
String 序号 = rs.getString("序号");
String 商品名称 = rs.getString("商品名称");
String 商品类别 = rs.getString("商品类别");
String 商品价格 = rs.getString("商品价格");
String 进货价格 = rs.getString("进货价格");
String 质保期 = rs.getString("质保期");
String 备注 = rs.getString("备注");
String[] cloumns ={序号,商品名称,商品类别,商品价格,进货价格,质保期,备注};


mm.addRow(cloumns);
}
table.setModel(mm);
}catch(Exception e){
System.out.println(e.toString());
}
}
}


public void actionPerformed(ActionEvent e){
//查找
if(e.getSource()==b4){
findFrame ff=new findFrame(this);
ff.setVisible(true);
}
//添加

else if(e.getSource()==b1){
addFrame af=new addFrame(this);
af.setVisible(true);
//修改
}else if(e.getSource()==b3){
if (table.getSelectedRow()==-1){
JOptionPane.showMessageDialog(null, "请选择你要修改的内容", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
editFrame ef=new editFrame(this);

ef.序号.setText((String)table.getValueAt(table.getSelectedRow(),0));
ef.商品名称.setText((String)table.getValueAt(table.getSelectedRow(),1));
ef.商品类别.setText((String)table.getValueAt(table.getSelectedRow(),2));
ef.商品价格.setText((String)table.getValueAt(table.getSelectedRow(),3));
ef.进货价格.setText((String)table.getValueAt(table.getSelectedRow(),4));
ef.质保期.setText((String)table.getValueAt(table.getSelectedRow(),5));
ef.备注.setText((String)table.getValueAt(table.getSelectedRow(),6));
ef.setVisible(true);
this.freshTable("select * from market");
}
//删除
}else if(e.getSource()==b2){
if (table.getSelectedRow()==-1){
JOptionPane.showMessageDialog(null, "请选择你要删除的行", "提示", JOptionPane.INFORMATION_MESSAGE);

}else {

String sql="delete * from market where 序号 = '"+table.getValueAt(table.getSelectedRow(),0)+"'";
myConnection conn=new myConnection();
if (conn.executeSql(sql)){
JOptionPane.showMessageDialog(null, "成功删除", "提示", JOptionPane.INFORMATION_MESSAGE);
this.freshTable("select * from market");
}else {
JOptionPane.showMessageDialog(null, "未知错误", "删除失败", JOptionPane.INFORMATION_MESSAGE);
}
}
}
}
}


//连接数据库
class myConnection{
ResultSet re;

String strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=kader.mdb";

public myConnection(){}
public ResultSet getResult(String sql){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(strurl);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet re=stmt.executeQuery(sql);
return re;
}
catch(Exception e){
System.out.println("getResult------"+e.toString());
return null;
}
}

public boolean executeSql(String sql){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(strurl);
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql);
conn.commit();
return true;
}
catch(Exception e){
System.out.println("executeSql----"+e.toString());
return false;
}
}
}

//添加模块
class addFrame extends JDialog implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int WIDTH = 400;
public static final int HEIGHT = 400;

JLabel 序号1,商品名称1,商品类别1,商品价格1,进货价格1,质保期1,备注1;
JTextField 序号,商品名称,商品类别,商品价格,进货价格,质保期,备注;
JButton b;
JPanel p;

mainFrame mf;

public addFrame(mainFrame mmf){
setTitle("添加商品");
setSize(WIDTH,HEIGHT);
setLocation(120,180);

Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());

序号1=new JLabel("序号");
商品名称1=new JLabel("商品名称");
商品类别1=new JLabel("商品类别");
商品价格1=new JLabel("商品价格");
进货价格1=new JLabel("进货价格");
质保期1=new JLabel("质保期");
备注1=new JLabel("备注");

序号=new JTextField(5);
商品名称=new JTextField(5);
商品类别=new JTextField(5);
商品价格=new JTextField(5);
进货价格=new JTextField(5);
质保期=new JTextField(5);
备注=new JTextField(10);

b=new JButton("确定");
p=new JPanel();
p.setLayout(new GridLayout(10,2,5,5));
p.add(序号1);
p.add(序号);
p.add(商品名称1);
p.add(商品名称);
p.add(商品类别1);
p.add(商品类别);
p.add(商品价格1);
p.add(商品价格);
p.add(进货价格1);
p.add(进货价格);
p.add(质保期1);
p.add(质保期);
p.add(备注1);
p.add(备注);
p.add(new Label(""));
p.add(new Label(""));
p.add(b);
contentPane.add(p);
//添加按钮监听器
b.addActionListener(this);
mf=mmf;
}

public void actionPerformed(ActionEvent e){
if (序号.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, "请输入序号", "提示", JOptionPane.INFORMATION_MESSAGE);
}else if (商品名称.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, "请输入商品名称", "提示", JOptionPane.INFORMATION_MESSAGE);
}else if (进货价格.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, "请输入进货价格", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
String sql="select * from market where 序号='"+ 序号.getText() +"'";
myConnection conn=new myConnection();
ResultSet rs;
rs=conn.getResult(sql);
try{
//System.out.println(rs.getRow());
if (rs.next()){
JOptionPane.showMessageDialog(null, "此序号已经存在", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
sql="insert into market values('"+ 序号.getText() +"','"+ 商品名称.getText() +"','"+ 商品类别.getText() +"','"+ 商品价格.getText() +"',"+ 进货价格.getText() +",'"+ 质保期.getText() +"','"+ 备注.getText() +"')";
if (conn.executeSql(sql)){
JOptionPane.showMessageDialog(null, "添加成功", "提示", JOptionPane.INFORMATION_MESSAGE);
mf.freshTable("select * from market");
序号.setText("");
商品名称.setText("");
商品类别.setText("");
商品价格.setText("");
进货价格.setText("");
质保期.setText("");
备注.setText("");

}else{
JOptionPane.showMessageDialog(null, "添加失败", "提示", JOptionPane.INFORMATION_MESSAGE);
}
}
}catch(Exception er){
System.out.println(er.toString());
}
}
}

}


...全文
561 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostyu 2011-09-21
  • 打赏
  • 举报
回复
是因为字段的中文名的问题
如果你的表跟字段全是英文的就没问题
这个问题的解决方法是在
设置prop属性

Properties prop = new Properties();
prop.put("charSet", "gb2312");
prop.put("username", username);
prop.put("password", password);
connect=DriverManager.getConnection(url,prop);

qingyuan18 2011-05-23
  • 打赏
  • 举报
回复
不要贴大段大段的程序,没有时间看的,自己先单步调试出大致的错误点,有疑问再上来问
smillyz 2011-05-23
  • 打赏
  • 举报
回复
先看看!
cffbest_521 2011-05-23
  • 打赏
  • 举报
回复
你使用的列名不能找到,看看数据库里与你使用的相符吗?
liuyyuns 2011-05-23
  • 打赏
  • 举报
回复
肯定是哪个字段写错了
bigTail_Wolf_ 2011-05-23
  • 打赏
  • 举报
回复
列名和数据库的列名不一致。
安心逍遥 2011-05-23
  • 打赏
  • 举报
回复
看操作的列名和数据库的表的列名是否一致。
肯定又不一致的,才会报这个错的
chw8219 2011-05-23
  • 打赏
  • 举报
回复
看操作的列名和数据库的表的列名是否一致。
看下输入的内容里面是否有单引号,如果没做转义替换,insert会报错的。
菜继续 2011-05-23
  • 打赏
  • 举报
回复
列名不一致
hanRivergo 2011-05-23
  • 打赏
  • 举报
回复
数据库里的表的列名与你使用的列名不一致,慢慢检查。
cscxxx 2011-05-23
  • 打赏
  • 举报
回复
数据库里的表建好了所有字段吗
lz要不要再比对一次
血战31天 2011-05-23
  • 打赏
  • 举报
回复
数据库字段是不是中文名啊,挺奇怪的,你看看是不是字段名出了问题
yadekar 2011-05-23
  • 打赏
  • 举报
回复
这是后面:

//修改模块
class editFrame extends JDialog implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int WIDTH = 400;
public static final int HEIGHT = 400;

JLabel 序号1,商品名称1,商品类别1,商品价格1,进货价格1,质保期1,备注1;
JTextField 序号,商品名称,商品类别,商品价格,进货价格,质保期,备注;
JButton b;
JPanel p;

mainFrame mf;

public editFrame(mainFrame mmf){
setTitle("修改商品信息");
setSize(WIDTH,HEIGHT);
setLocation(120,180);

Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());

序号1=new JLabel("序号");
商品名称1=new JLabel("商品名称");
商品类别1=new JLabel("商品类别");
商品价格1=new JLabel("商品价格");
进货价格1=new JLabel("进货价格");
质保期1=new JLabel("质保期");
备注1=new JLabel("备注");

序号=new JTextField(5);
商品名称=new JTextField(5);
商品类别=new JTextField(5);
商品价格=new JTextField(5);
进货价格=new JTextField(5);
质保期=new JTextField(5);
备注=new JTextField(10);
序号.setEnabled(false);

b=new JButton("确定");
p=new JPanel();
p.setLayout(new GridLayout(10,2,5,5));
p.add(序号1);
p.add(序号);
p.add(商品名称1);
p.add(商品名称);
p.add(商品类别1);
p.add(商品类别);
p.add(商品价格1);
p.add(商品价格);
p.add(进货价格1);
p.add(进货价格);
p.add(质保期1);
p.add(质保期);
p.add(备注1);
p.add(备注);
p.add(new Label(""));
p.add(new Label(""));
p.add(b);
contentPane.add(p);
//添加按钮监听器
b.addActionListener(this);
mf=mmf;
}

public void actionPerformed(ActionEvent e){

if (序号.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, "请输入序号", "提示", JOptionPane.INFORMATION_MESSAGE);
}else if (商品名称.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, "请输入商品名称", "提示", JOptionPane.INFORMATION_MESSAGE);
}else if (进货价格.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, "请输入进货价格", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
String sql="update market set 商品名称='"+ 商品名称.getText() +"',商品类别='"+ 商品类别.getText() +"',进货价格="+ 进货价格.getText() +",质保期='"+ 质保期.getText() +"',备注='"+ 备注.getText()+ "',商品价格='" +商品价格.getText()+ "' where 序号='"+ 序号.getText() +"'";
myConnection conn=new myConnection();
try{
//JOptionPane.showMessageDialog(null, sql, "提示", JOptionPane.INFORMATION_MESSAGE);
if (conn.executeSql(sql)){
JOptionPane.showMessageDialog(null, "修改成功", "提示", JOptionPane.INFORMATION_MESSAGE);
mf.freshTable("select * from market");
this.dispose();
}else{
JOptionPane.showMessageDialog(null, "修改失败", "提示", JOptionPane.INFORMATION_MESSAGE);
}
}catch(Exception er){
System.out.println(er.toString());
}
}
}

}


//查询模块
class findFrame extends JDialog implements ActionListener{

/**
*
*/
private static final long serialVersionUID = 1L;
mainFrame mf;
JPanel p;
JComboBox c;
JTextField t;
JButton b;
JButton fAll;
String sql="select * from market";
String[] colStr={"序号","商品名称","商品类别","商品价格","进货价格","质保期","备注"};

public findFrame(mainFrame mmf){
mf=mmf;
p=new JPanel();
c=new JComboBox(colStr);
t=new JTextField(10);
b=new JButton("查找");
fAll=new JButton("全部显示");

b.addActionListener(this);
fAll.addActionListener(this);

p.add(new JLabel("选择"));
p.add(c);
p.add(new JLabel("查找内容"));
p.add(t);
p.add(b);
p.add(fAll);
this.add(p);
this.setTitle("查找");
this.setSize(550,80);
this.setLocation(120, 180);
}


public void actionPerformed(ActionEvent e){
//查找
if (e.getSource()==b){
String selectStr=c.getSelectedItem().toString();
if (selectStr=="序号"){
sql="select * from market where "+selectStr+" = "+t.getText().toString();
}
else {
sql="select * from market where "+selectStr+" = '"+t.getText().toString()+"'";
}


mf.freshTable(sql);
//全部显示
}if (e.getSource()==fAll){
sql="select * from market";
mf.freshTable(sql);
}
}
}

class loginFrame extends JDialog implements ActionListener{

/**
*
*/
private static final long serialVersionUID = 1L;
JPanel p;
JTextField user;
JPasswordField pass;
JButton login,cancel;

public loginFrame(){
p=new JPanel();
user=new JTextField(10);
pass=new JPasswordField(10);
login=new JButton("登录");
cancel=new JButton("退出");

user.setText("");
pass.setText("");

login.addActionListener(this);
cancel.addActionListener(this);

p.add(new JLabel("账号"));
p.add(user);
p.add(new JLabel("密码"));
p.add(pass);
p.add(login);
p.add(cancel);
p.add(new JLabel("默认账号和密码为:admin"));
this.add(p);
this.setTitle("系统登录");
this.setSize(180,150);
this.setLocation(1100/2,650/2);
}


@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e){
//查找
if (e.getSource()==login){

if (user.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, "请输入用户名", "提示", JOptionPane.INFORMATION_MESSAGE);
}else if (pass.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, "请输入密码", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
myConnection conn=new myConnection();
ResultSet rs;
String sql="select * from admin where 用户名 = '"+user.getText().toString()+"' and 密码 = '"+pass.getText().toString()+"'";
try{
rs=conn.getResult(sql);
if (rs.next()){
this.dispose();
JOptionPane.showMessageDialog(null, "登陆成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
sql="select * from market";
mainFrame mf=new mainFrame();
mf.setTitle("超市管理系统");
mf.setSize(600,550);
mf.setLocation(680/2, 314/2);
mf.freshTable(sql);
mf.setVisible(true);
mf.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}else{
JOptionPane.showMessageDialog(null, "用户名或密码错误", "登录失败!", JOptionPane.INFORMATION_MESSAGE);
}
}catch(Exception er){
System.out.println(er.toString());
}
}
//全部显示
}if (e.getSource()==cancel){
System.exit(0);
}
}
}

62,614

社区成员

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

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