概念:JDBC是用JAVA操作数据库的方法,对表的操作属于基本操作
用途:JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果
好处:1,,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势,其次它增进了访问数据的效率和快捷程度
2, Java 和 JDBC 的结合,使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务, Java 和JDBC 可为外部客户提供获取信息更新的更好方法。
JDBC方法:
1,装载数据库驱动
2,定义连接字符串
3,获得字符串的连接
4,获得数据库的连接
5.定义调用的过程的sql语句
6.,获得编译对象
7.执行
具体如下:
1--3:
package JDB;
import java.sql.Connection;
import java.sql.DriverManager;
/**
* 单例创建数据库连接对象
* @author Administrator
*
*/
public class DBU {
private static Connection conn=null;
//私有化构造方法
private DBU(){
}
public static Connection getconn(){
if(conn!=null){
return conn;}
try{
//1,装载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2.定义连接字符串
String url = "jdbc:oracle:thin:@172.19.171.243:1521:MYORACLE";
//3.获得字符串的连接
conn=DriverManager.getConnection(url, "scott", "scott");
return conn;
}catch(Exception ef){
ef.printStackTrace();
}
return null;
}
}
4-7:
package JDB;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* 使用jdbc对表的增删改查
* 过程,块,
* @author Administrator
*
*/
public class pro {
public static void main(String[] args) {
pro p = new pro();
//p.pro_upname(3, "八条"); 改
//p.pro_add(6, "男", 18, "红中"); 增加
//p.pro_drop(1);
p.select(3);
}
public void pro_upname(int id,String newName){
try{
//1,获得数据库的连接
Connection conn =DBU.getconn();
//调用sql
String sql ="{call pro_2(?,?)}";
//2,获得数据库编译对象
CallableStatement stm =conn.prepareCall(sql);
//赋值:
stm.setInt(1,id);
stm.setString(2,newName);
//执行过程
stm.execute();
}catch(Exception ee){
ee.printStackTrace();
}
}
//增加数据的
public void pro_add(int id,String sax,int age,String name){
try{
//1,获得数据库的连接
Connection conn=DBU.getconn();
//2,定义调用的过程的sql语句
String sql = "{call pro_3(?,?,?,?)}";
//3,获得编译对象
CallableStatement cstm =conn.prepareCall(sql);
//4,给?赋值
cstm.setInt(1, id);
cstm.setObject(2, sax);
cstm.setInt(3, age);
cstm.setObject(4, name);
//5,执行结果
cstm.execute();
}catch(Exception ds){
ds.printStackTrace();
}
}
//删除的
public void pro_drop(int id){
try{
//1,获得数据库的连接
Connection conn= DBU.getconn();
//2,定义sql
String sql ="{call pro_delete(?)}";
//3,获得编译对象
CallableStatement ps = conn.prepareCall(sql);
//4,给问号赋值
ps.setInt(1, id);
//5,开始执行
ps.execute();
}catch(Exception e){
System.out.println("这里有问题");
}
}
//写一个查询的方法
public void select(int id){
try{
//1,获得数据库连接
Connection conn=DBU.getconn();
//2,定义sql
String asa = "{call pro_select(?,?,?)}";
//3,获得编译对象
CallableStatement psd = conn.prepareCall(asa);
//4,赋值
psd.setInt(1, id);
// psd.setString(2, name);
// psd.setInt(3, age);java.sql.Types.VARCHAR
psd.registerOutParameter(2, java.sql.Types.VARCHAR);
psd.registerOutParameter(3, java.sql.Types.VARCHAR);
//执行
psd.execute();
// 获得输出参数的数据
String Name = (String) psd.getObject(2);
String age = (String) psd.getObject(3);
System.out.println("姓名:" + Name + " 年龄:" + age);
}catch(Exception er){
er.printStackTrace();
}
}
}
数据库的删除和查询的过程:
--写一个删除的过程 指定ID的
create or replace procedure pro_delete(v_id userlog.id%type) is
begin
delete from userlog where Id=v_id;
end;
--写一个查询 名字和 年龄的过程
create or replace procedure pro_select(v_id in userlog.id%type,v_name out userlog.name%type,v_age out userlog.age%type) is
begin
select name ,age into v_name,v_age from userlog where Id=v_id;
end;
在调用过程的时候,做总结:
1,在ecilpse中输出查询的结果时,在oracle中的过程的形式参数中,形参要表明in 或 out .
2,在给问号赋值的时候,如果不知道转成什么数据类型,就写object。
3,在你书写的SQL语句后,在写上System.out.println("你的SQL语句");用来查看你写的是否正确
4,数据库中定义类型是,使用 表名.字段名%type.是很方便的
5,数据库里的 show errors; 真不错
问题:
经过这次,清楚了Java连接数据库的基本操作,问题:呵,有时就忘了sql语句怎么写,还有就是不怎么会写数据库里面的过程,块。