当前位置: 代码迷 >> Sql Server >> java连接数据库,程序运行有误!新手
  详细解决方案

java连接数据库,程序运行有误!新手

热度:37   发布时间:2016-04-24 10:14:02.0
java连接数据库,程序运行有误!新手求助!
//查询图书信息
import java.awt.event.*;
import javax.swing.*;

import java.awt.*;
import java.util.*;
import java.sql.*;
class QueryBook implements ActionListener
{
JFrame f3;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton  jbt1,jbt2;//按钮,确定、取消
JLabel label;  //标签:请输入图书号
JTextField tf,tf1,tf2,tf3,tf4,tf5,tf6;    //定义文本框
JLabel label1,label2,label3,label4;
    QueryBook()
   {
f3=new JFrame();
cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jpanelWest=new JPanel();
jp=new JPanel();
jbt1=new JButton("确定");
jbt2=new JButton("取消");
int size=20;
label=new JLabel("查询图书信息",SwingConstants.CENTER);
label.setFont(new Font("查询图书信息",Font.PLAIN,size));//加粗,字体大小20
label.setForeground(Color.blue);
tf=new JTextField(20);
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
tf5=new JTextField(20);
    tf6=new JTextField(20);
    tf1.setEditable(false);
 tf3.setEditable(false);
 tf4.setEditable(false);
 tf5.setEditable(false);
 tf6.setEditable(false);
//布局,添加控件
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanel pp4=new JPanel();
    JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("图书名",SwingConstants.CENTER));
pp2.add(tf1);
pp4.add(new JLabel("图书号",SwingConstants.CENTER));
pp2.add(tf2);
pp4.add(new JLabel("单  价",SwingConstants.CENTER));
pp2.add(tf3);
pp4.add(new JLabel("作  者",SwingConstants.CENTER));
pp2.add(tf4);
pp4.add(new JLabel("出版社",SwingConstants.CENTER));
pp2.add(tf5);
pp4.add(new JLabel("入库时间",SwingConstants.CENTER));
pp2.add(tf6);
pp3.add(jbt1);
    pp3.add(jbt2);
cp.add(pp4,"West");
cp.add(pp2,"Center");
    cp.add(pp3,"South");
cp.add(jpane4,"East");
f3.setSize(350,330);
f3.setVisible(true);
    jbt1.addActionListener(this);//注册监听器
    jbt2.addActionListener(this);
}
public void showRecord()
{
        try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  }catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=Book","sa","xuqianqian");
Statement sql;
String ql=tf.getText().trim();
String s="select * from book  where 图书号 ='"+ql +"'";
            sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
if(rs.next())
        {
      String bname=rs.getString(1);
String bno=rs.getString(2);
String price=rs.getString(3);
String writer=rs.getString(4);
String publish=rs.getString(5);
String indate=rs.getString(6);
tf1.setText(bname);
tf2.setText(bno);
tf3.setText(price);
tf4.setText(writer);
tf5.setText(publish);
tf6.setText(indate);
}
                else
            {JOptionPane.showMessageDialog(null,"您输入的图书号不存在,请重新输入",
"输入错误", JOptionPane.YES_NO_OPTION);
}
con.close();
            }catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
    }
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
   if(cmd.equals("确定"))
  {
   showRecord();
tf.setText("");
 }
  else if(cmd.equals("取消"))
  f3.setVisible(false);
}
public static void main(String []arg){
  QueryBook a=new QueryBook();
}

}
本段程序,不论输入的图书号存不存在于数据库中,都显示输入的图书号不存在~为什么??新手求助!
------解决方案--------------------
要么逻辑判断有问题,JAVA不熟,帮不了。
要么SQL 语句中有问题,常见是类型转换,比如数据库存的是nvarchar/nchar类型的数据,而where条件传入的是char/varchar。所以查不出来,你可以用sql server profiler或者JAVA的跟踪功能抓一下你的语句
  相关解决方案