佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 886|回复: 8

我的RoomBean.java可以run但是RoomDataBean.java不可以compile

[复制链接]
发表于 4-11-2005 10:55 AM | 显示全部楼层 |阅读模式
我的RoomBean.java可以run但是RoomDataBean.java不可以compile

以下是我的RoomBean.java和RoomDataBean.java,我的RoomBean.java可以run但是RoomDataBean.java不可以compile.问题出在那里呢?

这是RoomBean.java 的code

package dbentity;


public class RoomBean
{
      private String
roomID,roomType,checkIn,checkOut,numberOfDay,specialFacilities;

    public void setRoomID(String id)
    {
       roomID = id;
    }

    public String getRoomID()
    {
        return roomID;
    }

    public void setRoomType(String type)
    {
       roomType = type;
    }
   
     public String getRoomType()
    {
        return roomType;
    }
   
    public void setCheckIn(String day)
    {
       checkIn = day;
    }

    public String getCheckIn()
    {
        return checkIn;
    }

    public void setCheckOut(String day)
    {
       checkOut = day;
    }

    public String getCheckOut()
    {
        return checkOut;
    }

     public void setNumberOfDay(String number)
    {
      numberOfDay = number;
    }

    public String getNumberOfDay()
    {
        return numberOfDay;
    }

     public void setSpecialFacilities(String facilities)
    {
      specialFacilities = facilities;
    }

    public String getSpecialFacilities()
    {
        return specialFacilities;
    }
}









这是RoomDataBean.java(有问题)

package dbentity;

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


public class RoomDataBean
{
      private Connection connection;
      private PreparedStatement addRecord, getRecords;
      private Statement statement;

   public RoomDataBean() throws Exception
   {
      System.setProperty("jdbc.odbc.system.home","c:/Microsoft Access");
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

      connection = DriverManager.getConnection("jdbc:odbc:Room       Accommodation.mdb");

     statement = connection.createStatement();
  }


   public ArrayList getRoomList() throws SQLException
   {

       ArrayList roomList = new ArrayList();

      ResultSet results =statement.executeQuery(
         "SELECT roomID,roomType,checkIn,checkOut,numberOfDay,specialFacilities FROM room");


     while (results.next() )
     {
        RoomBean room = new RoomBean();

       room.setRoomID( results.getString(1) );
       room.setRoomType( results.getString(2) );
       room.setCheckIn( results.getString(3) );
       room.setCheckOut( results.getString(4) );
       room.setNumberOfDay( results.getString(5) );
       room.setSpecialFacilities( results.getString(6) );

       roomList.add(room);
       }
         return roomList;
     }

         public void addRoom(RoomBean room ) throws SQLException
         {
           statement.executeUpdate( " INSERT INTO room (roomID,roomType,checkIn,checkOut,numberOfDay,specialFacilities) VALUES ( ' " +room.getRoomID() +" ',' "+room.getRoomType()+" ',' "+room.getCheckIn()+ " ',' "+room.getCheckOut()+ " ',' "+room.getNumberOfDay()+" ',' "+room.getSpecialFacilities()+" ')");

        }
   
          protected void finalize()
          {

             try{
               statement.close();
               connection.close();
             }

          catch(SQLException sqlException){
            sqlException.printStackTrace();
            }

   
       }
      
   
}


请各位大大帮帮忙,感激不尽。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 4-11-2005 11:01 AM | 显示全部楼层
连error msg 都没有吗?
回复

使用道具 举报

 楼主| 发表于 4-11-2005 11:55 AM | 显示全部楼层
有啊,就是compile不到。有几个

RoomBean room = new RoomBean();

public void addRoom(RoomBean room ) throws SQLException
回复

使用道具 举报

发表于 4-11-2005 12:10 PM | 显示全部楼层
while Loop create 同样名字的obj..
我想这是问题所在吧..

while (results.next() )
     {
        RoomBean room = new RoomBean();
        ...
       roomList.add(room);
       }
         return roomList;
     }
回复

使用道具 举报

 楼主| 发表于 4-11-2005 12:38 PM | 显示全部楼层
这样的话    public void addRoom(RoomBean room ) throws SQLException 有问题吗?
回复

使用道具 举报

seagull 该用户已被删除
发表于 4-11-2005 11:32 PM | 显示全部楼层

Javabean & Data Access Layer

1。RoomBean 就取名为 Room。以 J2EE 的标准,人人都知道它是一个 Javabean。

2。这个 Javabean 是一个 value object,记得要 implement serializable。(this is one of the J2EE best practices)。如果没有 implement serializable,在 single server 里操作当然不会有问题。但是未来这个 application 要 deploy 到 cluster environment 时候,它就不能正常操作了。在 value object 里 implement serializable 也只是花你几秒的时间吧。。。

3。Data Access 方面用 DAO (Data Access Object) Pattern。以下的 code 是比较简单的 DAO 方式:


  1. import java.sql.Connection;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.sql.Statement;
  5. import java.util.Enumeration;
  6. import java.util.Properties;
  7. import java.util.ResourceBundle;

  8. /**
  9. * This class gets a JDBC connection for DAOs to perform required JDBC
  10. * operations and also closes the resources when JDBC operations are finished.
  11. *
  12. * @author Seagull Ng
  13. */
  14. public class J2EEServices
  15. {
  16.         private static Connection conn = null;

  17.         /**
  18.          * This method tries to create a JDBC connection by loading up the
  19.          * parameters from Connection.properties file.
  20.          *
  21.          * @return Returns a connection.
  22.          */
  23.         public static Connection getConnection()
  24.         {
  25.                 // Load the properties file to get the connection information.
  26.                 try
  27.                 {
  28.                         Properties connProp = loadParams("Connection");
  29.                         String driver = (String) connProp.get("DriverName");
  30.                         Class.forName(driver);

  31.                         conn = java.sql.DriverManager.getConnection((String) connProp
  32.                                         .get("URL")
  33.                                         + ":"
  34.                                         + (String) connProp.get("Port")
  35.                                         + "/"
  36.                                         + (String) connProp.get("DB"), (String) connProp
  37.                                         .get("UserName"), (String) connProp.get("Password"));
  38.                 }
  39.                 catch (Exception e)
  40.                 {
  41.                         System.err.println("Fail to get JDBC connection:");
  42.                         System.err.println(e.getMessage());
  43.                 }

  44.                 return conn;
  45.         }

  46.         /**
  47.          * This method closes the JDBC resources to prevent resources leak.
  48.          *
  49.          * @param rs -
  50.          *            ResultSet
  51.          * @param stmt -
  52.          *            Statement
  53.          * @param conn -
  54.          *            Connection
  55.          */
  56.         public static void closeDBResources(ResultSet rs, Statement stmt,
  57.                         Connection conn)
  58.         {
  59.                 try
  60.                 {
  61.                         if (rs != null)
  62.                                 rs.close();
  63.                 }
  64.                 catch (SQLException e)
  65.                 {
  66.                         System.err.println("Error closing resultset: " + e);
  67.                 }

  68.                 try
  69.                 {
  70.                         if (stmt != null)
  71.                                 stmt.close();
  72.                 }
  73.                 catch (SQLException e)
  74.                 {
  75.                         System.err.println("Error closing statement: " + e);
  76.                 }

  77.                 try
  78.                 {
  79.                         if (conn != null)
  80.                                 conn.close();
  81.                 }
  82.                 catch (SQLException e)
  83.                 {
  84.                         System.err.println("Error closing connection: " + e);
  85.                 }
  86.         }

  87.         /**
  88.          * This method reads a properties file which is passed as the parameter to
  89.          * it and load it into a java Properties object and returns it.
  90.          *
  91.          * @param file - Name of the file that has to be loaded.
  92.          * @return prop - Properties of database connection parameters.
  93.          * @throws java.io.IOException - In case of unexpected exceptions.
  94.          */
  95.         private static Properties loadParams(String file) throws java.io.IOException
  96.         {
  97.                 // Loads a ResourceBundle and creates Properties from it
  98.                 Properties prop = new Properties();
  99.                 ResourceBundle bundle = ResourceBundle.getBundle(file);
  100.                 Enumeration e = bundle.getKeys();
  101.                 String key = null;

  102.                 while (e.hasMoreElements())
  103.                 {
  104.                         key = (String) e.nextElement();
  105.                         prop.put(key, bundle.getObject(key));
  106.                 }

  107.                 return prop;
  108.         }
  109. }
复制代码


Connection.properties file

  1. DriverName=com.mysql.jdbc.Driver
  2. URL=jdbc:mysql://yourdomain.com
  3. Port=3306
  4. DB=ej605c14
  5. UserName=ej605c14
  6. Password=bob_the_builder
复制代码


  1. import java.sql.Connection;
  2. import java.sql.PreparedStatement;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. import java.util.ArrayList;
  7. import java.util.List;

  8. /**
  9. * This class provides Course related JDBC operations.
  10. *
  11. * @author Seagull Ng
  12. */
  13. public class CourseDAO
  14. {
  15.         /**
  16.          * strSqlGetCourse - Query string to get a course information by courseId.
  17.          */
  18.         private static final String strSqlGetCourse = "SELECT * FROM A2Courses WHERE courseId = ?";

  19.         /**
  20.          * strSqlGetCourses - Query string to get all courses.
  21.          */
  22.         private static final String strSqlGetCourses = "SELECT * FROM A2Courses";

  23.         /**
  24.          * strSqlInsertCourse - Query string to insert a course.
  25.          */
  26.         private static final String strSqlInsertCourse = "INSERT INTO A2Courses VALUES (?, ?, ?, ?, ?)";

  27.         /**
  28.          * This method gets a course by matching a course id.
  29.          *
  30.          * @param courseId Course ID
  31.          * @return Course object populated with course information
  32.          * @exception SQLException
  33.          */
  34.         public static Course getCourse(String courseId)
  35.         {
  36.                 Course course = new Course();
  37.                 PreparedStatement stmt = null;
  38.                 ResultSet rs = null;

  39.                 try
  40.                 {
  41.                         Connection conn = J2EEServices.getConnection();
  42.                         stmt = conn.prepareStatement(strSqlGetCourse);
  43.                         stmt.setString(1, courseId);
  44.                         stmt.execute();
  45.                         rs = stmt.getResultSet();

  46.                         while (rs.next())
  47.                         {
  48.                                 course.setCourseId(rs.getString("courseId"));
  49.                                 course.setCourseName(rs.getString("courseName"));
  50.                                 course.setCourseDesc(rs.getString("courseDesc"));
  51.                                 course.setCoursePeriod(rs.getString("coursePeriod"));
  52.                                 course.setCoursePrice(rs.getDouble("coursePrice"));
  53.                         }

  54.                         J2EEServices.closeDBResources(rs, stmt, conn);
  55.                 }
  56.                 catch (SQLException e)
  57.                 {
  58.                         System.err.println("SQL Exception in CourseDAO.getCourse(): " + e);
  59.                 }

  60.                 return course;
  61.         }

  62.         /**
  63.          * This method gets all courses.
  64.          *
  65.          * @return a collection of Course objects in a Map
  66.          * @exception SQLException
  67.          */
  68.         public static List getCourses()
  69.         {
  70.                 List courses = new ArrayList();
  71.                 Statement stmt = null;
  72.                 ResultSet rs = null;

  73.                 try
  74.                 {
  75.                         Connection conn = J2EEServices.getConnection();
  76.                         stmt = conn.createStatement();
  77.                         stmt.execute(strSqlGetCourses);
  78.                         rs = stmt.getResultSet();

  79.                         while (rs.next())
  80.                         {
  81.                                 Course course = new Course();
  82.                                 course.setCourseId(rs.getString("courseId"));
  83.                                 course.setCourseName(rs.getString("courseName"));
  84.                                 course.setCourseDesc(rs.getString("courseDesc"));
  85.                                 course.setCoursePeriod(rs.getString("coursePeriod"));
  86.                                 course.setCoursePrice(rs.getDouble("coursePrice"));
  87.                                 courses.add(course);
  88.                         }

  89.                         J2EEServices.closeDBResources(rs, stmt, conn);
  90.                 }
  91.                 catch (SQLException e)
  92.                 {
  93.                         System.err.println("SQL Exception in CourseDAO.getCourses(): " + e);
  94.                 }

  95.                 return courses;
  96.         }
  97.        
  98.         /**
  99.          * This method inserts a course record into the table.
  100.          *
  101.          * @param courseId Course ID
  102.          * @param courseName Course Name
  103.          * @param courseDesc Course Description
  104.          * @param coursePeriod Course Period (eg. Fall 2005)
  105.          * @param coursePrice Course Price
  106.          * @return either the row count for INSERT, or 0 for SQL statements that return nothing
  107.          * @exception SQLException
  108.          */
  109.         public static int insertCourse(String courseId, String courseName, String courseDesc, String coursePeriod, double coursePrice)
  110.         {
  111.                 int res = 0;
  112.                 PreparedStatement stmt = null;
  113.                 ResultSet rs = null;
  114.                
  115.                 try
  116.                 {
  117.                         Connection conn = J2EEServices.getConnection();
  118.                         stmt = conn.prepareStatement(strSqlInsertCourse);
  119.                         stmt.setString(1, courseId);
  120.                         stmt.setString(2, courseName);
  121.                         stmt.setString(3, courseDesc);
  122.                         stmt.setString(4, coursePeriod);
  123.                         stmt.setDouble(5, coursePrice);
  124.                         res = stmt.executeUpdate();
  125.                         J2EEServices.closeDBResources(rs, stmt, conn);
  126.                 }
  127.                 catch (SQLException e)
  128.                 {
  129.                         System.err.println("SQL Exception in CourseDAO.insertCourse(): " + e);
  130.                 }
  131.                
  132.                 return res;
  133.         }

  134. }
复制代码
回复

使用道具 举报

Follow Us
seagull 该用户已被删除
发表于 4-11-2005 11:49 PM | 显示全部楼层
原帖由 jasonmun 于 4-11-2005 12:10 PM 发表
while Loop create 同样名字的obj..
我想这是问题所在吧..

while (results.next() )
     {
        RoomBean room = new RoomBean();
        ...
       roomList.add(room);
       }
         retu ...


每 loop 一次就产生一个新的 room,然后把已经存值的 room 放到一个 collection 里。这样会有什么问题?
回复

使用道具 举报

 楼主| 发表于 5-11-2005 07:55 PM | 显示全部楼层
while (results.next() )
     {
        RoomBean room = new RoomBean();
        ...
       roomList.add(room);
       }
         return roomList;
     }  

我也是跟着以上的code来写呀但RoomBean room = new RoomBean() 就是有error。RoomDataBean.java:50:cannot resolve symbol。Symbol : class RoomBean.
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 5-11-2005 08:12 PM | 显示全部楼层
是package 的问题吗?一定要用package 吗?如果是应该如何写呢?

这个是connection 不是package,是吗?

package dbentity;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection{

        String strUrl = "";
        Connection conn = null;
       
        public DBConnection()
        {
               
        }
       
        public Connection                 getMicrosoftAccessConnection()
        {
                try
                {
                      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver";
                      this.strUrl = "jdbcdbc:Microsoft Access:Room                                                         Accommodation.mdb";
                      this.conn = DriverManager.getConnection( strUrl,"root", "" );

                      System.out.println("URL: " + strUrl);
                      System.out.println("Connection: " + conn);
                }
                catch( ClassNotFoundException cnfe )
            {
                    cnfe.printStackTrace();
            }
                catch( SQLException sqle )
            {
                        sqle.printStackTrace();
            }
               
                return conn;
               
        }   
       
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 11-11-2024 04:56 AM , Processed in 0.088166 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表