`
紫梦飘逸
  • 浏览: 46103 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JDBC对表的操作总结

阅读更多

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

 

 

 

 

2
0
分享到:
评论
4 楼 紫梦飘逸 2014-10-22  
songjie_xuan 写道
               

写的真的很好
3 楼 紫梦飘逸 2014-10-22  
Y_1746119035 写道
写得很好写得很好写得很好写得很好写得很好写得很好

真的很好
2 楼 songjie_xuan 2014-10-22  
               
1 楼 Y_1746119035 2014-10-22  
写得很好写得很好写得很好写得很好写得很好写得很好

相关推荐

Global site tag (gtag.js) - Google Analytics