概念: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语句怎么写,还有就是不怎么会写数据库里面的过程,块。