java连接数据库(参考别人和结合自己的笔记)

这里用的数据库是mysql 所以用到的java代码 jdbc

1. 开始需要加载数据库的驱动  Class.forName("com.mysql.jdbc.Driver");  

Class.forName(“”);的作用是要求JVM查找并加载指定的类,首先要明白,java里面任何class都要装载在虚拟机上才能运行,而静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了,而且以后不会再走这段静态代码了。

具体的详见:http://blog.csdn.net/kaiwii/article/details/7405761

  1.  try{   
  2.     //加载MySql的驱动类   
  3.     Class.forName("com.mysql.jdbc.Driver") ;   
  4.     }catch(ClassNotFoundException e){   
  5.     System.out.println("找不到驱动程序类 ,加载驱动失败!");   
  6.     e.printStackTrace() ;   
  7.     }   
  8. 这里还需要导入jar包  右击你的项目 Bulid Path-> Add External.. 然后选中你的mysql-connerctor-java包
2. 创建数据库的连接
public static final String username = "root"; //这是你数据库的账号
public static final String psw = "root";//数据库的密码 我这里随便写了个  自己的密码要记牢
public static final String url = "jdbc:mysql://localhost:3306/db?useCharset=true&&characterEncoding=UTF-8&&useSSL=true";
//提供连接数据库的URL 在jdbc中总是以jdbc开头 jdbc:mysql://localhost:3306/这个应该是ip地址 和端口3306 好像 苹果电脑有些端口是3307 
(有错的话希望帮忙改正下) 3306/后面的db 应该是你数据库要存数据地方文件的文件名
?后面 useCharset=true  useCharset 一定要为 true。 characterEncoding = UTF-8 也可以为其他 比如gbk 最后的useSSL 也是要加上去的
  1.  try{   
  2.     Connection con =    
  3.              DriverManager.getConnection(url , username , password ) ;   
  4.      }catch(SQLException se){   
  5.     System.out.println("数据库连接失败!");   
  6.     se.printStackTrace() ;   
  7.      }   
  8. 3.创建一个Statement   
    1.     •要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3  
    2.      种类型:
      1. 1执行静态SQL语句。通常通过Statement实例实现。   
      2.       2执行动态SQL语句。通常通过PreparedStatement实例实现。   
      3.       3执行数据库存储过程。通常通过CallableStatement实例实现。   
      4.     具体的实现方式:   
      5.         Statement stmt = con.createStatement() ;   
      6.        PreparedStatement pstmt = con.prepareStatement(sql) ;   
      7.        CallableStatement cstmt =    
      8.                             con.prepareCall("{CALL demoSp(? , ?)}") ;   
      9. 4.执行SQL语句   
        1.     Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute   
        2.     1ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。   
        3.     2int executeUpdate(String sqlString):用于执行INSERT、UPDATE或  DELETE语句以及SQL DDL语句,
        4. 如:CREATE TABLE和DROP TABLE等   
        5.     3execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。   
        6.    具体实现的代码:   
        7.     ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;   
        8.     int rows = stmt.executeUpdate("INSERT INTO ...") ;   
        9.     boolean flag = stmt.execute(String sql) ;   
        10. 5.关闭JDBC对象    
          1.      操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声   
          2.      明顺序相反:   
          3.      1、关闭记录集   
          4.      2、关闭声明   
          5.      3、关闭连接对象   
          6.           if(rs != null){   // 关闭记录集   
          7.         try{   
          8.             rs.close() ;   
          9.         }catch(SQLException e){   
          10.             e.printStackTrace() ;   
          11.         }   
          12.           }   
          13.           if(stmt != null){   // 关闭声明   
          14.         try{   
          15.             stmt.close() ;   
          16.         }catch(SQLException e){   
          17.             e.printStackTrace() ;   
          18.         }   
          19.           }   
          20.           if(conn != null){  // 关闭连接对象   
          21.          try{   
          22.             conn.close() ;   
          23.          }catch(SQLException e){   
          24.             e.printStackTrace() ;   
          25.          }   
          26.           }  
          27. //以上大部分参考自 http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html
做个笔记想自己多看看  下面有参考代码

package db;

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

public class dbConnecter {
	
	public final static String username= "root";
	public final static String psw = "root";
	public final static String url = "jdbc:mysql://localhost:3306/db?useCharset=true&&characterEncoding=UTF-8&&useSSL=true";
	public final static String driverName="com.mysql.jdbc.Driver";
	
	public Connection conn=null;
	public Statement statement = null;
	
	public void getConnection()
	{
		try {
			Class.forName(driverName);//配置数据库驱动
			conn = DriverManager.getConnection(url, username, psw);//获取链接
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public ResultSet querySql(String sql)
	{
		ResultSet rs = null;//声明返回结果
		try {
			statement = conn.createStatement();//配置事务
			rs = statement.executeQuery(sql);//查询返回结果集
		} catch (Exception e) {
			e.printStackTrace();
		} 
		
		return rs;
	}
	
	public int executeSql(String sql) 
	{
		int rs = 0;
		try {
			statement = conn.createStatement();//配置事务
			rs = statement.executeUpdate(sql);//返回结果
		} catch (Exception e) {
			e.printStackTrace();
		}
		return rs;
	}
	
	public String close()
	{
		String rs = "";
		try {
			if(statement!=null)
			{
				statement.close();
			}
			if(conn!=null)
			{
				conn.close();
			}
			rs = "success";
		} catch (Exception e) {
			e.printStackTrace();
			rs="failure";
		}
		return rs;
	}
}

package db;

import java.sql.ResultSet;

public class main {
	public static void main(String[] args) {
		dbConnecter con = new dbConnecter();
		try {
			con.getConnection();
			ResultSet rs = con.querySql("select * from tb_stu");
			while (rs.next())
			{
				System.out.println("stuId为:"+rs.getInt(1)+"  stuName为:"+rs.getString(2)+"  stuCode为:"+rs.getString(3));
			} //查询遍历数据
			int rs1 = con.executeSql("insert into tb_stu values(1,'stuName','stuCode')");
			System.out.println("新增数据条数为:"+rs1); //插入新数据
			int rs2 = con.executeSql("delete from tb_stu where stuId=1");
			System.out.println("删除数据条数为:"+rs2); //删除数据
			int rs3 = con.executeSql("update tb_stu set stuName='stuNewName' where stuId=1");
			System.out.println("修改数据条数为:"+rs3); //新增数据
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			con.close();
		}
		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值