您的位置:首页 > 编程语言 > Java开发

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

2017-02-15 14:17 405 查看
这里用的数据库是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

 try{
  

    //加载MySql的驱动类   

    Class.forName("com.mysql.jdbc.Driver") ;   

    }catch(ClassNotFoundException e){
  

    System.out.println("找不到驱动程序类 ,加载驱动失败!");   

    e.printStackTrace() ;   

    }   
这里还需要导入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 也是要加上去的

 try{
  

    Connection con =    

             DriverManager.getConnection(url , username , password ) ;   

     }catch(SQLException se){
  

    System.out.println("数据库连接失败!");   

    se.printStackTrace() ;   

     }   
3.创建一个Statement   
    •要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3  
     种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
  
      2、执行动态SQL语句。通常通过PreparedStatement实例实现。
  
      3、执行数据库存储过程。通常通过CallableStatement实例实现。
  
    具体的实现方式:   
        Statement stmt = con.createStatement() ;   
       PreparedStatement pstmt = con.prepareStatement(sql) ;   
       CallableStatement cstmt =    
                            con.prepareCall("{CALL demoSp(? , ?)}") ;
  
4.执行SQL语句   
    Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute   
    1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。
  
    2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
 DELETE语句以及SQL DDL语句,
如:CREATE TABLE和DROP TABLE等   
    3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。
  
   具体实现的代码:   
    ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
  
    int rows = stmt.executeUpdate("INSERT INTO ...") ;
  
    boolean flag = stmt.execute(String sql) ;
  
5.关闭JDBC对象    

     操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声   
     明顺序相反:   
     1、关闭记录集
  
     2、关闭声明
  
     3、关闭连接对象
  
          if(rs != null){   // 关闭记录集   
        try{
  
            rs.close() ;   
        }catch(SQLException e){
  
            e.printStackTrace() ;   
        }   
          }   
          if(stmt != null){   // 关闭声明   
        try{
  
            stmt.close() ;   
        }catch(SQLException e){
  
            e.printStackTrace() ;   
        }   
          }   
          if(conn != null){  // 关闭连接对象   
         try{
  
            conn.close() ;   
         }catch(SQLException e){
  
            e.printStackTrace() ;   
         }   
          }  

//以上大部分参考自 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();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: