繁体   English   中英

无法通过循环打印输出,不知道如何打印第二张表

[英]Can't print output through loop, don't know how to print second table

编辑:一切都会有帮助。 如果有人可以告诉我该过程,至少我会很感激。

我正在尝试让我的代码读取我制作的访问数据库。 在该数据库中有2个表,一个表是Soccer_Team,另一个表是Soccer_Players。 我在弄清楚如何在实际数据前面显示字段名称时遇到问题。 现在运行代码时,我得到以下信息:

名称:地点:主球场:西班牙巴塞罗那足球俱乐部诺坎普球场
姓名:位置:主球场:拜仁慕尼黑德国安联

我希望在“名称:”后面加上俱乐部名称,依此类推...我对Java不熟悉,因此在这里有些困惑。

另外,我想通过SQL查询从数据库中打印第二张表,该表可以显示上面的内容,但每行下方都印有玩家信息...我什至不知道从哪里开始。 我不确定我的解释是否很好,如果让别人感到困惑,对不起。

抱歉,问的太多了,但我很茫然……感谢您的帮助。

package msjavaaccessdb;

import java.sql.*;
import java.util.*;

public class MSjavaAccessDB {

/** Creates a new instance of databaseApplication */
public MSjavaAccessDB() {
}

/**
 * @param args the command line arguments
 */
static String nameOfJdbcOdbcDriver =
            "sun.jdbc.odbc.JdbcOdbcDriver";
//  static String dataBaseNameDSN = "jdbc:odbc:myDataSource";

static String dataBaseNameDSN = "jdbc:odbc:myDataSource";
static String userName = "";
static String passwordForUser = "";

static Connection myConnectionRequest = null;
static Statement myStatementObject = null;
static ResultSet myResultTuples = null;
static ResultSetMetaData myResultTuplesMetaData = null;

static String queryToBeExecuted = "select * from Soccer_Team";


public static void main(String args[])
                    throws ClassNotFoundException  {

  try {

    //Identify the driver to use
    Class.forName(nameOfJdbcOdbcDriver);

    //Attempt a connection to database...
    Connection myConnectionRequest =
            DriverManager.getConnection(
                    dataBaseNameDSN, userName, passwordForUser);

    //Create a statement object, use its method to execute query
    Statement  myStatementObject =
            myConnectionRequest.createStatement();

    //Use statement object method to execute a query.
    //Hold results in a resutl set...like a cursor
    ResultSet myResultTuples = myStatementObject.executeQuery
                                    (queryToBeExecuted);

    //Call metadata to get the number of attributes
    myResultTuplesMetaData = myResultTuples.getMetaData();
    int numberOfAttributes =
            myResultTuplesMetaData.getColumnCount();
    System.out.println(Integer.toString(numberOfAttributes));

    //For each row in result set, print ALL columns

    for(int rowNum = 1; myResultTuples.next(); rowNum++) {
            for (int i = 1; i <= numberOfAttributes; i++) {
                   if ( (i != 1) ) System.out.print (
                            myResultTuples.getString(i) + "\t");
                   else {//String xyz = myResultTuples.getString(1);    
                        int xyz = Integer.parseInt( myResultTuples.getString(1));

                        System.out.print ("Name: ");
                        System.out.print ("Location: ");
                        System.out.print ("Home Stadium: ");
                   }
            }

            System.out.println("\n\n");
    }

  }  // end of try block

  //handle ALL exceptions to above database calls
  catch (SQLException sqlError) {
    System.out.println("Unexpected exception : " +
            sqlError.toString() + ", sqlstate = " +
            sqlError.getSQLState());
    sqlError.printStackTrace();
  }

}  // end of main method of this class

}  // end of the class

因此,我不知道您的数据表的外观,但是我想您想做的是先打印列标签,然后再打印行的相应数据值。

for(int rowNum = 1; myResultTuples.next(); rowNum++) {
            for (int i = 1; i <= numberOfAttributes; i++) {
                   //print column label
                   System.out.print(myResultTuplesMetaData.getColumnLabel(i) + ": ");
                   //print data value
                   System.out.print(myResultTuples.getString(i) + "\t");
            }
            System.out.println("\n\n");
            //process SQl-Query about players and print out results in another for loop HERE
}

因此,对于第二个表,您必须像SELECT * FROM table2 WHERE team IS (?)一样作为PreparedStatement,然后在另一个循环中打印出结果。

我现在无法得到该错误,因为目前无法访问NetBeans。 当我在家用计算机上时,我可以稍后进行更新。 我不确定我所做的是否有意义,因为我不完全知道Java的规则是什么...希望这不是中风。

package msjavaaccessdb;

import java.sql.*;
import java.util.*;

public class MSjavaAccessDB {

/** Creates a new instance of databaseApplication */
public MSjavaAccessDB() {
}

/**
 * @param args the command line arguments
*/
static String nameOfJdbcOdbcDriver =
        "sun.jdbc.odbc.JdbcOdbcDriver";
static String dataBaseNameDSN = "jdbc:odbc:myDataSource";

static String dataBaseNameDSN = "jdbc:odbc:myDataSource";
static String userName = "";
static String passwordForUser = "";

static Connection myConnectionRequest = null;
static Statement myStatementObject = null;
static ResultSet myResultTuples = null;
static ResultSetMetaData myResultTuplesMetaData = null;
static ResultSet ResultTuples = null;
static ResultSetMetaData ResultTuplesMetaData = null;

static String queryToBeExecuted = "select * from Soccer_Team";
static string secondQuery = "select * from Soccer_Player where team is (?)";


public static void main(String args[])
                throws ClassNotFoundException  {

try {

//Identify the driver to use
Class.forName(nameOfJdbcOdbcDriver);

//Attempt a connection to database...
Connection myConnectionRequest =
        DriverManager.getConnection(
                dataBaseNameDSN, userName, passwordForUser);

//Create a statement object, use its method to execute query
Statement  myStatementObject =
        myConnectionRequest.createStatement();

//Use statement object method to execute a query.
//Hold results in a resutl set...like a cursor
ResultSet myResultTuples = myStatementObject.executeQuery
                                (queryToBeExecuted);
ResultSet ResultTuples = myStatementObject.executeQuery
                (secondQuery);

//Call metadata to get the number of attributes
myResultTuplesMetaData = myResultTuples.getMetaData();
int numberOfAttributes =
        myResultTuplesMetaData.getColumnCount();
System.out.println(Integer.toString(numberOfAttributes));


ResultTuplesMetaData = ResultTuples.getMetaData();
int numOfAttributes =
        ResultTuplesMetaData.getColumnCount();
System.out.println(Integer.toString(numOfAttributes));


//For each row in result set, print ALL columns

for(int rowNum = 1; myResultTuples.next(); rowNum++) {
        for (int i = 1; i <= numberOfAttributes; i++) {
               //print column label
               System.out.print(myResultTuplesMetaData.getColumnLabel(i) +         ": ");
               //print data value
               System.out.print(myResultTuples.getString(i) + "\t");
        }
        System.out.println("\n\n");
}

for(int rowNum = 1; ResultTuples.next(); rowNum++) {
        for (int i = 1; i <= numOfAttributes; i++) {
               //print column label
               System.out.print(ResultTuplesMetaData.getColumnLabel(i) + ": ");
               //print data value
               System.out.print(ResultTuples.getString(i) + "\t");
        }
        System.out.println("\n\n");
  }
}  // end of try block

//handle ALL exceptions to above database calls
catch (SQLException sqlError) {
  System.out.println("Unexpected exception : " +
        sqlError.toString() + ", sqlstate = " +
        sqlError.getSQLState());
    sqlError.printStackTrace();
  }

}  // end of main method of this class

}  // end of the class

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM