JDBC数据库连接+MySql

JDBC数据库连接的步骤:

  1. 下载并将 放到tomcat的lib目录下。

  2. 加载MySql数据库的驱动(通过Class.forName();方法来加载,所传参数为mysql驱动字符串)

  3. 创建数据库连接(通过调用getConnection();方法,传入数据库地址、用户名和密码。该方法返回的是一个数据库连接)

  4. 创建数据库操作对象(调用数据库连接对象的createStatement();方法)

public class DataBaseUtil {
  //数据库连接工具包

   public static Connection DataBaseConnection(){
     
       String driver="com.mysql.jdbc.Driver";//驱动路径
       String url="jdbc:mysql://**"; //**为数据库地址
       String user="root";//访问数据库的用户名
       String password="111111";//数据库用户密码
        
       try{
              Class.forName("driver");//加载驱动
              Connection conn=DriverManager.getConnection(url,user,password);//创建数据库连接
return conn ; }catch(Exception e){ e.printStackTrace(); } return null ; } public static Statement getDefaultStatement() throws Exception{ Connection conn = DataBaseUtil.getDefaultConnection(); Statement stmt = conn.createStatement();//创建数据库操作对象 return stmt ; } public static void close(Connection conn){ try{ if(null != conn && !conn.isClosed()){ conn.close(); }catch(Exception e){ e.printStackTrace();
} } }

 

调用数据库工具包中的getDefaultStatement();方法,返回值为Statement。使用Statement需要注意字符串拼接的问题。

  • statement用于查询的方法:executeQuery(sql);  ;用于增删改的方法: execute(sql); 

例子:

Public ResultSet exqueryInfo(){

   try{

        Statement statement = DataBaseUtil.getDefaultStatement();
        String sql="select * from 表名 where 字段1 = '" + 变量1 + "' and 字段2 = '"+ 变量2 + "'";
        ResultSet rs=statement.executeQuery(sql);
        return rs;
   }catch(Exception e){
        e.printStackTrace();
   }
        return null ;    
}

Statement每次执行sql语句,相关数据库都要执行sql语句的编译;而prestatement是预编译的,prestatement支持预处理。故在对数据库只执行一次性存取的时候,用Statement对象进行处理;当需要进行批量处理的时候,prestatement能大大降低运行时间,加快访问数据库的速度。

调用数据库工具包中的DataBaseConnection(); 方法,返回值为Connection。

  • prestatement用于查询的方法:executeQuery( );  ;用于增删改的方法:executeUpdate( );

public void updateAC(String a, String b, String c){
                
    String sql = "UPDATE common_tabBooked SET A=? , B=?  WHERE C = ?  "; //改

try{ Connection conn = DataBaseUtil.getDefaultConnection(); PreparedStatement pstm = conn.prepareStatement(sql); pstm.setString(1, a); pstm.setString(2, b); pstm.setString(3, c); pstm.executeUpdate(); }catch(Exception e){ e.printStackTrace(); } }

 增:

String sql="INSERT INTO 表名 (字段1,字段2,字段3,字段4,字段5) values(?,?,?,?,?)";

查:

string sql = "select * from 表名 where 字段1 = ?";

删:

string sql = "delete  from 表名 where 字段1 = ?";

 注意:

两者在创建时的区别:

Statement statement = conn.createStatement();
PreparedStatement preStatement = conn.prepareStatement(sql);

执行时的区别:

ResultSet rSet = statement.executeQuery(sql);
ResultSet pSet = preStatement.executeQuery();

PreparedStatement有预编译的过程,已经绑定sql,之后无论执行多少遍,都不会再去进行编译

转载于:https://www.cnblogs.com/mshanBlog/p/10702968.html