(一),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操作:
importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.Properties;public classExecuteDO {privateString driver;privateString url;privateString user;privateString pswd;//初始参数
public void initParam(String paraFile) throwsFileNotFoundException, IOException{
Properties props=newProperties();
props.load(newFileInputStream(paraFile));
driver=props.getProperty("driver");
url=props.getProperty("url");
user=props.getProperty("user");
pswd=props.getProperty("pswd");
}//定义建表语言
public void createTable(String sql) throwsClassNotFoundException{
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) throwsClassNotFoundException{
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) throwsClassNotFoundException{
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) throwsException, IOException{
ExecuteDO ed=newExecuteDO();//新建属性文件
Properties props=newProperties();
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 资源下载地址
第一种连接方式(纯代码):
importjava.beans.PropertyVetoException;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importcom.mchange.v2.c3p0.ComboPooledDataSource;public classCp3Test {private staticConnection conn;private static ComboPooledDataSource ds = newComboPooledDataSource();public staticConnection 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();
}returnconn;
}public static voidmain(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文件内容如下:
com.mysql.jdbc.Driver
root
123
3
10
2
10
调用方式如下:
importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importcom.mchange.v2.c3p0.ComboPooledDataSource;public classCp3Test {private staticConnection conn;private static ComboPooledDataSource ds = newComboPooledDataSource();public staticConnection getConnection() {try{
conn=ds.getConnection();
}catch(SQLException e) {
e.printStackTrace();
}returnconn;
}public static voidmain(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();
}
}
}