使用 JDBC 创建数据库对象 2

构建更高级别的 JDBC 对象
从上面的例子可以明显看出,如果可以将我们使用过的一些方法封装在几个更高级别对象中,那将非常有帮助,我们不仅可以封装 try 程序块,而且可以更简单地访问 ResultSet 方法。

在这一部分中,我们将构建一个新的 resultSet 对象,该对象封装了 JDBC ResultSet 对象,并以 String 数组的形式返回一行数据。我们发现您始终需要从 ResultSetMetaData 对象中获取列的序号和名称,因此,创建一个封装元数据的新对象就非常合理。

另外,我们经常需要按名称或整数索引提取某行的元素,如果不必总是将这些访问语句包括 try 块中,那将大有帮助。最后一点,如果我们需要整行的内容,则更方便的做法是将整行以String 数组形式返回。在下面所示的 resultSet 对象中,我们致力于实现这些目标:

class resultSet
{
//这个类是 JDBC ResultSet 对象的更高级抽象
   ResultSet rs;
   ResultSetMetaData rsmd;
   int numCols;
   public resultSet(ResultSet rset)
   {
      rs = rset;
      try
      {
      //同时获取元数据和列数
      rsmd = rs.getMetaData();
      numCols = rsmd.getColumnCount();
      }
      catch (Exception e)
      {System.out.println("resultset error"
                                +e.getMessage());}
   }
   //--
   public String[] getMetaData()
   {
    //返回包含所有列名或其他元数据的
    //一个数组
      String md[] = new String[numCols];
      try
         {
      for (int i=1; i<= numCols; i++) 
         md[i-1] = rsmd.getColumnName(i);
      }
      catch (Exception e)
      {System.out.println("meta data error"+
                                e.getMessage());}
      return md;
   }
   //--
   public boolean hasMoreElements()
   {
      try{
      return rs.next();
      }
   catch(Exception e){return false;}
   }
   //--
   public String[] nextElement()
   {
   //将行的内容复制到字符串数组中
      String[] row = new String[numCols];
      try
      {
      for (int i = 1; i <= numCols; i++) 
            row[i-1] = rs.getString(i);
      }
      catch (Exception e)
      {System.out.println("next element error"+
                        e.getMessage());}
    return row;
   }
   //--
   public String getColumnValue(String columnName)
   {
   String res = "";
     try 
     {
     res = rs.getString(columnName);
     }
   catch (Exception e)
   {System.out.println("Column value error:"+
                columnName+e.getMessage());}
   return res;
   }
   //--
   public String getColumnValue(int i)
   {
   String res = "";
     try 
     {
     res = rs.getString(i);
     }
   catch (Exception e)
   {System.out.println("Column value error:"+
                columnName+e.getMessage());}
   return res;
   }
   //--
   public void finalize()
   {
    try{rs.close();}
    catch (Exception e)
      {System.out.println(e.getMessage());}
   }
}
通过简单使用 new 操作符就地创建一个 ResultSet 对象,我们很容易将任何 ResultSet 对象封装在此类中:
ResultSe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Eclipse中使用JDBC创建数据库表,需要遵循以下步骤: 1. 创建一个Java项目,添加JDBC驱动程序到项目的classpath中。 2. 在Java文件中导入必要的类:java.sql.Connection,java.sql.DriverManager,java.sql.Statement。 3. 使用DriverManager类获取数据库连接,例如: ``` Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password"); ``` 这里的URL需要根据你的数据库类型进行修改,包括主机名,端口号和数据库名称。 4. 创建一个Statement对象使用它来执行SQL语句,例如: ``` Statement stmt = conn.createStatement(); String sql = "CREATE TABLE mytable (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), PRIMARY KEY (id))"; stmt.executeUpdate(sql); ``` 这里的SQL语句可以根据你的需求进行修改,例如添加列,定义数据类型等等。 5. 关闭Statement和Connection对象,例如: ``` stmt.close(); conn.close(); ``` 完整的代码示例: ``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class JdbcExample { public static void main(String[] args) { try { // 获取数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password"); // 创建Statement对象 Statement stmt = conn.createStatement(); // 执行SQL语句创建表 String sql = "CREATE TABLE mytable (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), PRIMARY KEY (id))"; stmt.executeUpdate(sql); // 关闭Statement和Connection对象 stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 注意:这里的username和password需要根据你的数据库设置进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wxyxl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值