当前位置:  技术问答>java相关

令人头痛的问题:java中SqlServer数据库查询程序,运行的结果与实际不符

    来源: 互联网  发布时间:2015-02-17

    本文导语:  下面是一段源程序,要实现通过按DigData按钮从sqlserver数据库里提取数据,再把数据写进一个文本文件中存在与源程序相同的目录下,编译运行都正常,但是结果(文本文件)与实际不符。 要查的表Tablepl中有2个字段...

下面是一段源程序,要实现通过按DigData按钮从sqlserver数据库里提取数据,再把数据写进一个文本文件中存在与源程序相同的目录下,编译运行都正常,但是结果(文本文件)与实际不符。

要查的表Tablepl中有2个字段(Id和Name)
其中只有3条记录:01 a
                02 b
                03 c 

而且sql语句很简单,就是
    select * from Tablepl where name='a'

但是返回的结果却只有01(应该还有a才对),

如果换成 
    select * from Tablepl

则编译正常,运行(点击DigData按钮)时出错:
SQL Error:java.sql.Exception:[Microsoft][ODBC SQL Server driver]无效的描述符号  0 s1002

这两个问题百思不得其解,还请高手指教:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.io.*;

public class Prc_c_m extends JFrame implements ActionListener{

    JButton buttonDigdata=new JButton("Dig Data");
    JButton buttonUpload=new JButton("UpLoad File");

    public Prc_c_m() {
        super("Prc_c");
        setSize(360,360);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel pane = new JPanel();
        pane.setLayout(new GridLayout(1, 2, 5, 15));
        buttonDigdata.addActionListener(this);
        pane.add(buttonDigdata);
        pane.add(buttonUpload);
        setContentPane(pane);
    }

    void digData() {
        String data = "jdbc:odbc:prc_c";
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection conn = DriverManager.getConnection(
                data, "sa", "");
            Statement st = conn.createStatement();
            ResultSet rec = st.executeQuery(
                "SELECT * FROM TablePl WHERE Name='a' ORDER BY Id");

            try {
            FileOutputStream file = new FileOutputStream("prc.txt");
            
            int i=0;
            while (rec.next()){
                file.write(rec.getString(++i)); 
            }
            file.close();
            } catch (IOException e) {
            System.out.println("Error -- " + e.toString());
            }



            st.close();
        } catch (SQLException s) {
            System.out.println("SQL Error: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState());
        } catch (Exception e) {
            System.out.println("Error: " + e.toString()
                + e.getMessage());
        }
    }

    public void actionPerformed(ActionEvent evt) {
        if (evt.getSource() ==buttonDigdata)
            digData();
    }

    public static void main(String[] arguments) {
        Prc_c_m frame = new Prc_c_m();
        frame.pack();
        frame.setVisible(true);
    }



}


|
 hzm1029(老农)的说法很对,此处代码中定义数据集为滚动不敏感型,那么每一条记录的各个字段可以用rec.getString(1)这种方式取数据,但为了准确、便捷的取出数据,最好使用rec.getString(fieldName1)这种形式(因为一般字段名已知,并且表的结构一般情况下不会变动),代码中的取数据的方式是不规范的,简单如下:
try{
  while (rec.next()){
    file.write(rec.getString(fieldName1)); 
    file.write(rec.getString(fieldName2));
    ......            
  }
}catch(Exception e){
  e.....;
}


|
...
while (rec.next()){
     file.write(rec.getString(1)); 
     file.write(rec.getString(2));
                 
}
...
i没有用

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ​有关Docker的八个令人难以置信的事实
  • 令人头痛的问题:如何判断数据库表中的字段已全部遍历
  • 怎么没人给出令人满意的回答啊,我再加点分。高手指点吧,没办法了
  • 令人头痛的问题:如何用getString()为空的方法判断数据库表中的字段已全部遍历
  • [Oracle] 浅析令人抓狂的ORA-01555问题
  • 一个令人郁闷的问题!!!
  • 大家看看这个令人费解的问题
  • 朋友给了我几张rh8.0安装盘 单安上去后多少令人有些失望,请高手帮忙
  • 令人失望的世界杯,放分!!!!!!!!!
  • 令人困惑的socket通讯问题
  • 感谢linux爱好者的大力支持!告诉大家一个令人激动的好消息!!
  • 一个令人无法理解的结果,高手可以帮我看看吗?
  • 【散分】va_arg问题,令人郁闷的Gcc&CC&hcc&yacc
  • 大家来讨论!关于application、Swing编程的一些很令人头疼的问题!
  • 测试一下这里是否有OO高手, 这是我贴在买买提bbs的一个小挑战的第一步, 没人能够给出令人满意的回答.
  • JSP简明教程:令人兴奋的脚本编程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3