java 数据库程序设计:
数据库:按照一定的数据结构来组织、存储和管理数据的仓库;
数据库管理系统 DBMS[Data Base Management System]:是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库
数据库系统(database system) 由数据库、数据库管理系统、以及应用程序组成
关系型数据库:三个要素:结构 完整性 和语言
JDBC[Java Database Connectivity]:
与数据库建立连接, 发送sql语句,处理sql语句返回的结果
- :建立与数据库的连接:
(1)加载相应数据库的JDBC驱动程序(JDk6 以后自动加载)
java.lang.Class.Forname("JDBCDriverClass")
(2)建立与数据库的连接
Connection conn = DriverManager.getConnection(String url,String user,String passWord)
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/ssh_example","root","guo123456.")
- 执行sql语句:
(1)创建Statement对象:传输sql语句,并将执行结果返回
Statement stmt = conn.createStatement();
(2)执行sql语句:Statement 对象会将结果封装成ResultSet对象返回
String sql = "select * from Student"
ResultSet rs = stmt.executeQuery(sql);
<3> 处理返回结果:
while(rs.next){
String no = rs.getString("sNo");
string no = rs.getString(1);
}
<4>关闭创建的各种对象:
1)关闭结果集对象 rs.close();
2)关闭Statement对象 stmt.close();
3)关闭连接对象 conn.close();
<5>数据库进一步操作:
1)不含参数的静态查询:Statemnet
- 含有参数的动态查询:PrepareStatement
- 储存过程:callableStatement
[1]Statement() 接口
静态sql语句在执行 executeQUery(); executeUpdate()等方法时,作为参数的Sql语句的内容不变,也就是sql语句中没有参数
int count = stmt.executeUpdate(updateSql);
[2]PreparedStatement()接口
是处理预编译语句的一个接口,执行动态的sql语句,(sql 语句中提供参数)
String sql = “select * from Student where name =?”
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,“201201012”)
ps.executeQuery();
[3]CallbleStatement()接口
继承 Statement()接口 和 PreparedStatement() 接口,既可以处理一般的sql语句,也可以处理 IN(输入)参数
还定义了OUT(输出)参数,以及INOUT(输入输出)参数的处理方法。
- 事务处理:
1)setAutoCommit() :事物操作默认是自动提交
conn.setAutoCommit(false)
2)commit():提交sql语句
3)rollback():当调用 Commit() 方法进行事务处理,如果有一条sql语句没有执行生效,就会抛出SQLException异常,
调用 rollback()方法,事务取消并将数据进行恢复。事物回滚。
#----------------连接数据库代码------------------
public class Test19 {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/ssh_example?useUnicode=true&characterEncoding=utf8";
private static String user ="root";
private static String password = "guo123456.";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
String sql ="select * from Student";
String insertsql = "insert into Student values('201201014','水库','男',47,'看到')";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()) {
String no = rs.getString("sNo");
String name = rs.getString("sName");
String sex = rs.getString("sex");
int age = rs.getInt("age");
String dept = rs.getString("dept");
System.out.println(no+" "+name+" "+sex+" "+age+" "+dept);
}
int rsinsert = stmt.executeUpdate(insertsql);
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try {
if(rs != null) rs.close();
if(stmt !=null) rs.close();
if(conn !=null) rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}