(一),MySql数据库

     1,MySql数据库的数据类型定义

      

    2,完整性约束:

    3,索引:

      作用:唯一作用就是加快对表查询速度,索引通过快速路径方法访问来快速定位数据,从而减少磁盘的II/O;

      缺点:维护浪费开销,存储需要一定的磁盘空间

    4,数据库操作语言:

      1,insert into tableName(column1,...) values(value1,...);

      2,update tableName set(column1=value1...) where condition;

      3,delete from tableName where condition

    5,表与表之间的左外链接,右外链接,全链接,内链接区别

      左外链接:保留两表所有匹配成功的的记录,和左表未匹配成功的记录,其右对应项为null;

      右外链接:保留两表所有匹配成功的的记录,和右表未匹配成功的记录,其左对应项为null;

      全链接:保留两表所有的的记录,不管是否匹配上,没匹配上对应项为null;

      内链接:只保留链表匹配成功的记录数;

     6,系统属性:

(二) JDBC操作

     1,所需jar包,下载地址

     2,简单的数据库JDBC操作: 

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties; public class ExecuteDO {
private String driver;
private String url;
private String user;
private String pswd;
//初始参数
public void initParam(String paraFile) throws FileNotFoundException, IOException{
Properties props=new Properties();
props.load(new FileInputStream(paraFile));
driver=props.getProperty("driver");
url=props.getProperty("url");
user=props.getProperty("user");
pswd=props.getProperty("pswd");
}
//定义建表语言
public void createTable(String sql) throws ClassNotFoundException{
Class.forName(driver);//加载驱动
try {
Connection conn=DriverManager.getConnection(url,user,pswd);//获取数据库连接
PreparedStatement stmt=conn.prepareStatement(sql);//创建状态对象,Prepared效率高些
stmt.executeUpdate();//执行更新数据库,创建表
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
//插入表
public void insertTable(String sql) throws ClassNotFoundException{
Class.forName(driver);
try {
Connection conn=DriverManager.getConnection(url,user,pswd);
PreparedStatement prst=conn.prepareStatement(sql);
for(int i=0;i<5;i++){//循环插入5个值
prst.setString(1, "DD"+i);//设置第三列的数值,1代表第一个?
prst.executeUpdate();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//查询结果
public void queryTable(String sql) throws ClassNotFoundException{
Class.forName(driver);
try {
Connection conn=DriverManager.getConnection(url,user,pswd);
PreparedStatement stat=conn.prepareStatement(sql);
ResultSet reset=stat.executeQuery();
while(reset.next())
System.out.println(reset.getInt(1)+"\t"+reset.getString(2)+"\t"
+reset.getString(3));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception, IOException{
ExecuteDO ed=new ExecuteDO();
//新建属性文件
Properties props=new Properties();
props.setProperty("url", "jdbc:mysql://localhost:3306/javatest");
props.setProperty("driver", "com.mysql.jdbc.Driver");
props.setProperty("user", "root");
props.setProperty("pswd", "123");
props.store(new FileOutputStream("mysql.ini"),"commen Lins");
ed.initParam("mysql.ini");
//测试建表功能,DDL
ed.createTable("create table jdbc_test(jdbc_id int auto_increment primary key,"+"jdb_name varchar(255),jdbc_desc text);");
//测试插入表结果:DML
ed.insertTable("Insert into jdbc_test(jdb_name,jdbc_desc) values('rr',?)");
//测试查询表结果:DML功能
ed.queryTable("select * from jdbc_test");
System.out.println("ok!!");
}
}

  PrepareStatement和Statement区别:

    1,PrepareStatement可以提高代码的可读性

    2,ParperStatement提高了代码的灵活性和执行效率。

    3,ParperStatement安全性更强些。

(三)事务操作

    1,事务的特点

    2,Connection类控制事务有:setAutoCommit()//是否自动提交;commit()//提交事务 rollback():撤销事务;查看这里

(四)使用数据库连接池操作:

     c3p0 jar包:优点时:可以自己清理不再使用的Connection,Statement,ResultSet 资源下载地址

   第一种连接方式(纯代码):

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; public class Cp3Test { private static Connection conn;
private static ComboPooledDataSource ds = new ComboPooledDataSource(); public static Connection getConnection() {
try {
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/javatest?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=256&rewriteBatchedStatements=true");
ds.setUser("root");
ds.setPassword("123");
conn = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
} catch (PropertyVetoException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args){ try {
PreparedStatement pstmt=Cp3Test.getConnection().prepareStatement("select * from jdbc_test");
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"
+rs.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

  第二种方式:通过在src目录下建立名为"c3p0-config.xml”的xml文件

xml文件内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
<default-config>
<property name="jdbcUrl">
<![CDATA[
jdbc:mysql://localhost:3306/javatest?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=256&rewriteBatchedStatements=true
]]>
</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">123</property>
   <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">3</property>
   <!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">10</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">2</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">10</property>
</default-config>
</c3p0-config>

 调用方式如下:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; public class Cp3Test {
private static Connection conn;
private static ComboPooledDataSource ds = new ComboPooledDataSource(); public static Connection getConnection() {
try {
conn = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args){ try {
PreparedStatement pstmt=Cp3Test.getConnection().prepareStatement("select * from jdbc_test");
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"
+rs.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

最新文章

  1. Course Schedule II
  2. 如何处理js的跨域问题
  3. python第十二天-----RabbitMQ
  4. javascript保留两位小数
  5. 【HDOJ】【1693】Eat The Trees
  6. 如何从Linux源码获知版本信息
  7. SQLite使用教程4 创建数据库
  8. Linux Mono OpenShift Cloud9 rhc
  9. Myeclipse+Tomcat安装与配置
  10. wxpython 布局管理
  11. Qt程序设计——txt文本中获取字符串的问题
  12. 强制设置IE浏览器的版本模式
  13. 在App Store中无法更新xcode 8.3.2时 以及更新新系统10.12
  14. Linux磁盘分区(二):删除
  15. InfluxDb中写入重复数据问题解决方案
  16. HDU_5504 GT and sequence
  17. 详解用em替换px
  18. Python3 urllib.request库的基本使用
  19. 从壹开始 [ Nuxt.js ] 之一 || 为开源收录Bug之 TiBug项目 开篇讲
  20. vue项目安装vux

热门文章

  1. Codeforces Round #336 (Div. 2) A
  2. poj1679 次最小生成树 kruskal(暴力枚举)
  3. code forces 996BWorld Cup
  4. Vitamio 视频播放
  5. 各版本Sql Server下载地址全
  6. 多线程调用COM组件的体会(CoInitialize)(转)
  7. cookie登录
  8. linux题目整理(二)
  9. springBoot Ribbon Hystrix Dashboard
  10. Mysql数据库乱码总结