您的位置:首页 > 数据库

数据库相关知识的总结

2014-07-19 20:14 218 查看
近期做了一个仿QQ网络编程项目,但由于很多知识尚存在问题,在此,就不介绍项目成果了,待后面解决这些问题,会再更新博客。下面主要是讲解这个项目中数据库设计的一些问题。

数据库可以说是一个项目中很关键的一环,数据库设计得好,项目中很多问题都能轻松解决。数据库设计的重要性和设计原则:http://blog.csdn.net/wangpeng047/article/details/7109208

数据库设计的过程(六个阶段):

1.需求分析阶段
准确了解与分析用户需求(包括数据与处理)

是整个设计过程的基础,是最困难、最耗费时间的一步
2.概念结构设计阶段
是整个数据库设计的关键

通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型
3.逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型

对其进行优化
4.数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
5.数据库实施阶段
运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果

建立数据库,编制与调试应用程序,组织数据入库,并进行试运行
6.数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。

在数据库系统运行过程中必须不断地对其进行评价、调整与修改

 

连接数据库代码部分:

public
class
DBUtil {
      //连接数据库的方法
      public
static
ConnectiongetConnect(){
        Connection conn = null;
        String user = "root";
        String pwd = "123456";
        String url ="jdbc:mysql://localhost:3306/qq_chat";
        try {
           //加载数据库连接的驱动类        Class.forName("com.mysql.jdbc.Driver").newInstance();
           //获取连接
     conn = DriverManager.getConnection(url, user, pwd);
           System.out.println("连接成功!");
        } catch (Exception e) {
           e.printStackTrace();
        }
        return conn;
      }
}

 

同时如果要为了以后的调用方便,可将上述类中的getConnect方法,拆分为以下模式:声明为静态的方法,更便于操作,但会消耗一定内存。

public
class
JDBCUtils
{
   private JDBCUtils(){}
   static
private
String   driveName="com.mysql.jdbc.Driver"   ;
   static
private
String   url="jdbc:mysql://localhost:3306/qq_chat"   ;
   static
private
String   user="root"  ;
   static
private
String   password="123456"   ;
      static
   {
      try {
        Class.forName(driveName);
      } catch (ClassNotFoundExceptione) {
        e.printStackTrace();
      }
   }
  
   public
static
  Connection getConnection()
   {
      Connection conn= null;
      try {
         conn = DriverManager.getConnection(url,
user, password);
      } catch (Exception e) {
        e.printStackTrace();
      }
      return conn;
   }
  
   public
static  void
closeAll(Connection conn,Statement stmt,ResultSet rs)
   {
     
      if(conn!=null)
      {
        try {
           conn.close();
        } catch (SQLException e) {
           e.printStackTrace();
        }
        conn = null;
      }
     
      if(stmt!=null)
      {
        try {
           stmt.close();
        } catch (SQLException e) {
           e.printStackTrace();
        }
        stmt = null;
      }
     
      if(rs!=null)
      {
        try {
           rs.close();
        } catch (SQLException e) {
           e.printStackTrace();
        }
        rs = null;
      }
   }
}
也可以使用配置文件来加载数据库:
public class DBUtils
{
   private static String driver;
   private static String url;
   private static String user;
   private static String password;
 
   /**
    * 初始化值
    */
   static {
      File file = newFile("src" + File.separator + "db_properties.properties");//db_properties.properties为配置文件
 
      try {
        FileInputStream fis = newFileInputStream(file);
        // 创建一个 Properties 对象
        Properties p = newProperties();
        // 加载读取的数据
        p.load(fis);
        // 取出对应的值
        driver =p.getProperty(driver);
        url =p.getProperty("url");
        user =p.getProperty("user");
        password =p.getProperty("password");
      } catch (Exception e) {
        e.printStackTrace();
      }
   }
 
   /**
    * 获取连接对象
    * @return Conn当前连接的对象
    */
   public static Connection getConn()
   {
      Connection conn = null;
      try {
        Class.forName(driver);
        conn =DriverManager.getConnection(url, user, password);
      } catch (Exception e) {
        e.printStackTrace();
      }
      return conn;
   }
}
配置文件"db_properties.properties"的内容:
# mysql #
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://127.0.0.1:3306/qq_chat
user = root
password =123456
 
数据库操作类的相关步骤:

1. 先获取连接对象,

Connection conn = DBUtil.getConnect();

2. 要执行的sql语句

String sql = “    ;”;

(注意sql语句结尾,mysql中可以加分号,而在其他的数据库中千万不能以分号结尾,可以用go结束)

Sql语句有两种表示方式,现举例说明:

方式一:

String sql = "insert into user(username,password)values('"+username+"','"+password+"');";

方式二

String sql = "insert into user(username,password)values(?,?);";

 

3.创建预编译对象

PreparedStatement ps = conn.prepareStatement(sql);

设置参数的值(如果sql语句是使用第二种方式,则要有此步骤)

ps.setString(1, username);

ps.setString(2,password);

4.发送并执行sql

ps.executeUpdate();(更新时用)

ResultSet rs = ps.executeQuery();(查询时用,一般都会返回结果集对象)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: