MySQL知识回顾,数据库的创建,JDBC连接,备份和恢复

MySQL数据库的创建、JDBC连接和优化

语句规范:

1、 关键字函数名大写
2、 数据库名,表名,字段名小写
3、 Sql语句分号结尾

数据类型的选择:
   有符号数无符号数
整型;TINYINT 1字节、SMALLINT 2字节、MEDIUMINT、INT、BIGINT
Float :精确小数点后7位;
Double:
日期时间型:YEAR、TIME、DATE、DATAIME、TIMESTAMP  
字符型CHAR,VARCHAR ,TINYTEXT,TEXT(2的16次方字节),MEDIUMTEXT,LONGTEXT(2的32次方字节),ENUM,SET

Java中对应使用String或者java.sql 包下的Clob类

查看数据表结构:

SHOW TABLES FROM student;

SHOW COLUMNS FROM tb1;


JDBC 基础知识:
JDBC由两层构成;上层是jdbc应用程序(API),下层是jdbc驱动程序API
JDBC提供有四种数据库连接的方法:
  分别是:JAVA连接数据库的方式有多种:根据所需要的不同数据库驱动分,分为四种:
1:1类驱动。这就是JDBC-ODBC桥的方式。
但这种方式不适合程序的重用与维护,不推荐使用。需要数据库的ODBC驱动。
2:2类驱动。这就是JDBC+厂商API的形式。
厂商API一般使用C编写,所以,这种方式也不长使用。
3:3类驱动。这就是JDBC+厂商Database Connection Server+DataBase的形式。
这种方法就是在JAVA 与 DATABASE之间价起了一台专门用与数据库连接的服务器(一般由数据库厂商提供)。
他的好处在于能优化连接。
4:4类驱动。这就是纯JDBC+DATABASE的连接方式。也是推荐的连接方式。
这使得APPLICATION与数据库分开,开发者只需关心内部逻辑的实现而不需注重数据库连接的具体实现。
在这其中有两种连接的方式:硬编码方式,就是在程序中硬性编入数据库连接的所须参数。
JNDI DataSource方式。就是在程序运行的外布环境中又称(Context)设置一个datasource数据源,有一个jndi 名称,程序只须查找此名称就可得到一个数据库连接的对象。
Type 1: jdbc-odbc桥 Jdbc-odbc 桥 是sun公司提供的,是jdk提供的的标准api. 
这种类型的驱动实际是把所有 jdbc的调用传递给odbc ,再由odbc调用本地数据库驱动代码.( 本地数据库驱动代码是指 由数据库厂商提供的数据库操作二进制代码库,例如在oracle for windows中就是oci dll 文 件)
只要本地机装有相关的odbc驱动那么采用jdbc-odbc桥几乎可以访问所有的数据库,jdbc- odbc方法对于客户端已经具备odbc driver的应用还是可行的。
但是,由于jdbc-odbc先调用 odbc再由odbc去调用本地数据库接口访问数据库.所以,执行效率比较低,对于那些大数据量 存取的应用是不适合的.
而且,这种方法要求客户端必须安装odbc 驱动,所以对于基于 internet ,intranet的应用也是不合适的.因为,你不可能要求所有客户都能找到odbc driver.
一般ACCESS用到的比较多,初学者用。实际项目是不用的
Type 2: 本地Api驱动
本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库。
这种方法需要本地 数据库驱动代码. 本地api驱动|厂商DB代码---数据库Server这种驱动比起jdbc-odbc桥执行效率大大提高了.
但是,它仍然需要在客户端加载数据库厂商 提供的代码库.这样就不适合基于internet的应用.并且,他的执行效率比起3,4型的jdbc驱动 还是不够高。
Type3:网络协议驱动 
这种驱动实际上是根据我们熟悉的三层结构建立的. jdbc先把对数局库的访问请求传递给网 络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,
再把这种调用传给数据库服务器.如果中间件服务器也是用java开发的,那么在在中间层也可以使用1,2型 jdbc驱动程序作为访问数据库的方法. 
网络协议驱动--中间件服务器---数据库Server
由于这种驱动是基于server的.所以,它不需要在客户端加载数据库厂商提供的代码库.而且 他在执行效率和可升级性方面是比较好的.因为大部分功能实现都在server端,
所以这种驱动 可以设计的很小,可以非常快速的加载到内存中. 但是,这种驱动在中间件层仍然需要有配置 其它数据库驱动程序,并且由于多了一个中间层传递数据,
它的执行效率还不是最好.
Type4 纯JAVA驱动 
这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求.由于4型驱动写的应用可 以直接和数据库服务器通讯.这种类型的驱动完全由java实现,
因此实现了平台独立性. 本地协议驱动---------数据库Server
由于这种驱动不需要先把jdbc的调用传给odbc或本地数据库接口或者是中间层服务器.所以它的执行效率是非常高的.而且,它根本不需要在客户端或服务器端装载任何的软件

或驱动. 这种驱动程序可以动态的被下载.但是对于不同的数据库需要下载不同的驱动程序.

通过JDBC访问数据库的流程:

1、 建立数据源  (即创建需要进行连接的数据库,启动服务器)

2、 装入JDBC驱动程序

加载Driver类,自动在DriverManager中注册的方法有两种:

1、 Class.forName(“con.microsoft.jdbc.sqiserver.SQLServerDriver”);

2、 Jdbc.drivers=foo.bar.Driver:wombat.sql.Driver:bad.test.ourDriver;

3、 建立连接

调用方法:

DriverManger.getConnection(String url);

DriverManger.getConnection(String url,Properties info);

DriverManger.getConnection(String url,String user,Stringpassword);

**url的标准语法;jdbc:<subprotocol>:<subname>

例:

String url=”jdbc:odbc:source”;

Connnection con=DriverManager.getConnection(url,”user”,”password”);

4、 执行SQL语句

Jdbc提供的3个类及其创建方法

1、 Statement:发送简单的sql语句;

2、 PerparedStatement: 发送带有一个或多个输入参数的SQL语句

3、 CallableStatement:用于执行SQL存储程序—一组可通过名称来调用的SQL语句

5、 检索结果

6、 关闭连接    conn.close();

简单例子

public static Connection getConnection()throws SQLException, ClassNotFoundException{

                  //建立数据库连接

                  Stringdriverclass="com.mysql.jdbc.Driver";

                  Stringurl="jdbc:mysql://localhost:3306/student";

                  Stringuser="root";

                  Stringpassword="@wujie";

                  //导入属性文件

                  Class.forName(driverclass);

                  Connectionconnection=DriverManager.getConnection(url,user,password);

                  returnconnection;

         }

         publicvoid TestPS() throws ClassNotFoundException, SQLException{

                  PreparedStatementpreparedStatement=null;

                  Connectionconnection=null;

                  try{

                          Connectionconnection1=TestPrepareStatement.getConnection();

                          Stringsql="INSERT INTO basedata (stu_num,stu_name,stu_sex) VALUES(?,?,?)";

                          preparedStatement=connection1.prepareStatement(sql);

                          preparedStatement.setInt(1,115);

                          preparedStatement.setString(2,"xiaowang");

                          preparedStatement.setString(3,"男");

                          ///

                          preparedStatement.executeUpdate();

                  }catch(Exceptione){

                          e.printStackTrace();

                  }finally{

                          //

                  }

         }

         publicstatic void main(String[]args) throws ClassNotFoundException, SQLException{

                  TestPrepareStatementt=new TestPrepareStatement();

                  t.TestPS();

         }        

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值