数据库相关知识的总结

来源:互联网 发布:机械手编程语言 编辑:程序博客网 时间:2024/04/29 14:23

近期做了一个仿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();(查询时用,一般都会返回结果集对象)

0 0