使用原生态jdbc操作数据库

 
 
 
 
package cn.taylor.demo2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;


public class Demo2 {

	@Test
	public void fun1() throws ClassNotFoundException, SQLException{
		/*
		 * 一. 得到Connection
		 *   > 准备四大参数
		 *   > 加载驱动类
		 *   > 得到Connection
		 */
		
		String driverClassName="com.mysql.jdbc.Driver";
		String url="jdbc:mysql://localhost:3306/taylor";
		String username="root";
		String password="123456";
		
		//加载驱动类
		Class.forName(driverClassName);
		
		//得到Connection	
		Connection con=DriverManager.getConnection(url, username,password);
		
		/*
		 *  二.对数据库做增,删,改
		 *   1.通过Connection对象创建Statement,Statement语句的发送器,它的功能就是发送sql语句。
		 *   2.调用它的 int excuteUpdate(String sql),可以发送DML,DDL   
		 */
		
		//1.通过Connection得到Statement对象
		Statement stmt=con.createStatement();	//注意这个Statement的包
		
		//2.使用 Statement发送sql语句
	    
	    //插入一条数据记录
		//String sql="INSERT INTO user VALUES('hahaha','shiyishi','123456')";
		
		//改变数据记录
		String sql="UPDATE user SET use6rname='lisi',password='111111' WHERE age='20'";
		
		//返回值r表示是影响几行
		int r=stmt.executeUpdate(sql);
		System.out.println(r);
	}
		/*
		 * 三.执行查询
		 */
		
		@Test
		public void fun2() throws ClassNotFoundException, SQLException{
			/*
			 * 1.得到Connection
			 * 2.得到Statement,发送sql查询语句
			 * 3.对查询返回的“表格”进行解析
			 */
			String driverClassName="com.mysql.jdbc.Driver";
			String url="jdbc:mysql://localhost:3306/taylor";
			String mysql_username="root";
			String mysql_password="123456";
			//加载驱动类
			Class.forName(driverClassName);
			
			Connection con=DriverManager.getConnection(url, mysql_username,mysql_password);
			Statement stmt=con.createStatement();
			
			ResultSet rs=stmt.executeQuery("SELECT * FROM user");
			//System.out.println(rs);
			
			/*
			 * 解析ResultSet
			 * 1.把光标向下移动一行,并判断下一行是否存在
			 * 2.利用循环,将表中数据输出
			 */
			
			
			while(rs.next()){
				
				String username=rs.getString("username");	//通过列名称来获取该列的值
				String password=rs.getString(2);
				String age=rs.getString(3);		//通过列编号来获取该列的值
				System.out.println(username+ ","+password+","+age);
			}
			
			/*
			 * 
			 *四. 关闭资源
			 */
			rs.close();
			stmt.close();
			con.close();   	//这个东西,必须要记得关掉
		}
		
		//规范化代码
		@Test
		public void fun3() throws Exception{
			
			//定义引用
			Connection con=null;
			Statement stmt=null;
			ResultSet rs=null;
			
			try{
				
				String driverClassName="com.mysql.jdbc.Driver";
				String url="jdbc:mysql://localhost:3306/taylor";
				String m_username="root";
				String m_password="123456";
				
				Class.forName(driverClassName);
				
				//实例化
				con=DriverManager.getConnection(url, m_username,m_password);
				
				stmt=con.createStatement();
				
				rs=stmt.executeQuery("SELECT * FROM user");
				
				//rs.last();	//把光标移动到最后一行
				//System.out.println(rs.getRow());	//获取当前行所在编号
				
				//rs.beforeFirst();	//将光标移动到第一行前面
				//循环遍历
				/*
				 * rs的getString()和getObject()方法比较通用。
				 */
//			   while(rs.next()){
//				   
//				String username=rs.getString(1);	
//			 	String password=rs.getString(2);
//				String age=rs.getString(3);
//				System.out.println(username + ","+password+","+age);
//			   	
//			   }
			
				int count=rs.getMetaData().getColumnCount();	//获取列数
				while(rs.next()){
					for(int i=1;i<=count;i++){
						System.out.print(rs.getString(i));
						if(i<count){
						System.out.print(",");
						}
					}
					System.out.println();    //换行
				}
			}catch(Exception e){	
				throw new RuntimeException(e);
			}finally{		//finally里面的语句是一定会执行的
				
				//关闭操作,倒序关闭
				if(rs!=null)rs.close();	//判断空指针是为了增强代码的健壮性。
				if(stmt!=null)stmt.close();
				if(con!=null)con.close();
			}	
		}	
	}




猜你喜欢

转载自blog.csdn.net/roseTaylor/article/details/80289955
今日推荐