Myeclipse 6.0+Mysql6.0程序运行中遇到的问题

玩猴子龙 发布于 2012/05/05 14:54
阅读 437
收藏 0

project项目用户登录时,出现以下问题:

日志里没有报错,
只显示成功加载驱动类!
成功连接到数据库!
成功关闭数据库!
成功连接到数据库!
成功关闭数据库!

怎么解决这个问题?是不是需要重装Mysql?
sqlManager.java
/*
 * 数据库操作类,进行数据库底层操作
 * 配置信息在Config.properties文件中
 * Made By:coolszy
 * 2012.04.07
 */

package com.njue.mis.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.PropertyResourceBundle;

public class SqlManager
{
 //定义常量
 private final int PSTM_TYPE=0;
 private final int CALL_TYPE=1;
 
 private static SqlManager manager = null; //静态成员变量,支持单态模式
 private PropertyResourceBundle bundle; //配置资源文件
 private static String jdbcDrive = null; //JDBC驱动类型
 private String DBhost = ""; //数据库主机地址
 private String DBname = ""; //数据库名
 private String DBprot = ""; //数据库端口
 private String DBuser = ""; //数据库用户名
 private String DBpasswd = ""; //数据库密码
 private String strcon = null; //连接字符串

 private Connection conn = null; //连接对象   
 private PreparedStatement pstm = null;
 private CallableStatement cstm = null;

 /**
  *   私有构造函数,不可实例化
  */
 private SqlManager()
 {
  try
  {
   // 读取配置文件
   bundle = new PropertyResourceBundle(SqlManager.class
     .getResourceAsStream("Config.properties"));
   this.DBhost = getString("DBhost"); //读取主机名
   this.DBname = getString("DBname"); //读取用户名
   this.DBprot = getString("DBport"); //读取端口
   this.DBuser = getString("DBuser"); //读取用户
   this.DBpasswd = getString("DBpassword"); //读取密码
   String databese_type = getString("database-type"); //读取数据库类型
   if (databese_type != null) //如果类型不为空
   {
    if (databese_type.toLowerCase().equals("mysql"))
    { // 设置mysql数据库的驱动程序和连接字符
     jdbcDrive = "com.mysql.jdbc.Driver";
     strcon = "jdbc:mysql://" + DBhost + ":" + DBprot + "/"
       + DBname;
    }
    else
     if (databese_type.toLowerCase().equals("oracle"))
     { // 设置oracle数据库的驱动程序和连接字符
      jdbcDrive = "oracle.jdbc.driver.OracleDrive";
      strcon = "jdbc:oracle:thin:@" + DBhost + ":" + DBprot
        + ":" + DBname;
     }
     else
      if (databese_type.toLowerCase().equals("sqlserver2000"))
      { // 设置sqlserver2000数据库的驱动程序和连接字符
       jdbcDrive = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
       strcon = "jdbc:micorsoft:sqlserver://" + DBhost
         + ":" + DBprot + ";DatabaseName=" + DBname;
      }
      else
       if (databese_type.toLowerCase().equals(
         "sqlserver2005"))
       { // 设置sqlserver2005数据库的驱动程序和连接字符
        jdbcDrive = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        strcon = "jdbc:sqlserver://" + DBhost + ":"
          + DBprot + ";DatabaseName=" + DBname;
       }
   }
  }
  catch (Exception e)
  {
   System.err.println("SqlManager Error!" + e.getMessage());
   e.printStackTrace();
  }
 }

 /**
  *  读取配置文件中的值
  * @param key 配置文件的key
  * @return  key对应的值
  */
 private String getString(String key)
 {
  return this.bundle.getString(key);
 }

 /**
  * 单态模式获取实例
  * @return SqlManager对象
  */
 public static SqlManager createInstance()
 {
  if (manager == null)
  {
   manager = new SqlManager();
   manager.initDB();
  }
  return manager;
 }

 /**
  *  初始化连接参数,由指定的DBType生成
  */
 public void initDB()
 {
  try
  {
   Class.forName(jdbcDrive);
  }
  catch (Exception e)
  {
   System.err.println("initDB Error!" + e.getMessage());
   e.printStackTrace();
  }
  System.out.println("成功加载驱动类!");
 }

 /**
  *  连接数据库
  */
 public void connectDB()
 {
  try
  {
   conn = DriverManager.getConnection(strcon, DBuser, DBpasswd); // 获取连接
   conn.setAutoCommit(false); //设置自动提交为false
  }
  catch (Exception e)
  {
   System.err.println("connectDB Error!" + e.getMessage());
   e.printStackTrace();
   return;
  }
  System.out.println("成功连接到数据库!");
 }

 /**
  *  断开数据库
  */
 public void closeDB()
 {
  try
  {
   if (pstm != null)
   {
    pstm.close();
   }
   if (cstm != null)
   {
    cstm.close();
   }
   if (conn != null)
   {
    conn.close();
   }
  }
  catch (Exception e)
  {
   System.err.println("closeDB Error!" + e.getMessage());
   e.printStackTrace();
   return;
  }
  finally
  {
   pstm = null;
   cstm = null;
   conn = null;
  }
  System.out.println("成功关闭数据库!");
 }

 /**
  * 设置PrepareStatement对象中Sql语句中的参数
  * @param sql sql语句
  * @param params 参数列表
  */
 private void setPrepareStatementParams(String sql, Object[] params)
 {
  try
  {
   pstm = conn.prepareStatement(sql); //获取对象
   if (params != null)
   {
    for (int i = 0; i < params.length; i++) // 遍历参数列表填充参数
    {
     pstm.setObject(i + 1, params[i]);
    }
   }
  }
  catch (SQLException e)
  {
   System.err.println("setPrepareStatementParams Error!"+ e.getMessage());
   e.printStackTrace();
  }
 }

 /**
  * 设置CallableStatementParams对象中sql语句中的参数
  * @param sql sql语句
  * @param params 参数列表
  */
 private void setCallableStatementParams(String sql, Object[] params)
 {
  try
  {
   cstm = conn.prepareCall(sql); //获取CallableStatement对象
   if (params != null)
   {
    for (int i = 0; i < params.length; i++) // 遍历数组填充参数
    {
     cstm.setObject(i + 1, params[i]);
    }
   }
  }
  catch (SQLException e)
  {
   System.err.println("setCallableStatementParams Error!"+ e.getMessage());
   e.printStackTrace();
  }
 }

 /**
  * 执行查询
  * @param sql sql语句
  * @param params 参数列表
  * @param type sql语句的类型
  * @return 返回ResultSet类型的查询结果
  */
 public ResultSet executeQuery(String sql, Object[] params, int type)
 { // 执行查询数据库接口
  ResultSet rs = null;
  try
  {
   switch (type)
   //判断是PrepareStatement还是CallableStatement
   {
   case PSTM_TYPE:
    manager.setPrepareStatementParams(sql, params); //填充参数
    rs = pstm.executeQuery(); // 执行查询操作
    break;
   case CALL_TYPE:
    manager.setCallableStatementParams(sql, params); //填充参数
    rs = cstm.executeQuery(); //执行查询
    break;
   default:
    throw new Exception("不存在该选项");
   }
  }
  catch (Exception e)
  {
   System.err.println("executeQuery Error!" + e.getMessage());
   e.printStackTrace();
  }
  return rs;
 }
// public ResultSet executeQuery(String sql)
// {
//  ResultSet rs = null;
//  try
//  {
//   Statement stmt=conn.createStatement();
//   rs=stmt.executeQuery(sql);
//  }
//  catch (Exception e)
//  {
//   System.err.println("executeQuery Error!" + e.getMessage());
//   e.printStackTrace();
//  }
//  return rs;
// }

 /**
  * 更新数据库操作
  * @param sql sql语句
  * @param params 参数列表
  * @param type sql语句的类型
  * @return 执行操作的结果
  */
 public boolean executeUpdate(String sql, Object[] params, int type) // 执行无返回数据的数据查询,返回值是被改变的书库的数据库项数
 {
  boolean result=false;
  try
  {
   switch (type) 
   //判断是PrepareStatement还是CallableStatement
   {
   case PSTM_TYPE: 
    manager.setPrepareStatementParams(sql, params); //填充参数
       pstm.executeUpdate(); // 执行更新
       manager.commitChange();
       result=true;
    break;
   case CALL_TYPE:
    manager.setCallableStatementParams(sql, params); //填充参数
    cstm.executeUpdate(); // 执行更新
    manager.commitChange();
    result=true;
    break;
   default:
    throw new Exception("不存在该选项");
   }
  }
  catch (Exception e)
  {
   System.err.println("executeUpdate Error!:" + e.getMessage());
   e.printStackTrace();
  }
  return result;
 }

 /**
  * 提交信息到数据库
  * @throws SQLException
  */
 private void commitChange() throws SQLException
 {
  try
  {
   conn.commit();
   System.out.println("数据提交成功!");
  }
  catch (Exception e)
  {
   System.out.println("CommitChange Error!" + e.getMessage());
   e.printStackTrace();
  }
 }
}

Config.properties

#Set *.properties default encoding UTF-8

#\u6570\u636e\u5e93\u5e95\u5c42\u64cd\u4f5c\u7c7b\u914d\u7f6e\u6587\u4ef6

#\u6307\u5b9a\u6570\u636e\u5e93\u7684\u7c7b\u578b
database-type=mysql

#\u6307\u5b9a\u4e3b\u673a\u5730\u5740
DBhost=localhost
#\u6307\u5b9a\u7aef\u53e3\u53f7
DBport=3306
#\u6307\u5b9a\u8fde\u63a5\u6570\u636e\u5e93
DBname=Jxc
#\u6307\u5b9a\u7528\u6237\u540d
DBuser=root
#\u6307\u5b9a\u5bc6\u7801
DBpassword=

SqlManager.java通过Config.properties调用数据库的信息

加载中
0
被风遗忘
被风遗忘
兄弟.你首先格式化一下代码.看清代码才能帮你解决问题.
返回顶部
顶部