java连接数据库详解

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

public class MySql {

    static final String URL = "jdbc:mysql://localhost:3306/databasetest";
//加载驱动
static{
   try {       
       Class.forName("com.mysql.cj.jdbc.Driver");   
} catch (ClassNotFoundException e) {    
    e.printStackTrace();
}  
}

//获得数据库连接对象
public static Connection getConnection()
{   
    Connection conn = null;
    try {       
        conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/databasetest?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT", "root", "455464");      
    } catch (SQLException e) {      
        e.printStackTrace();        
    }   
    return conn;    
}

//测试插入
public static void main(String  args[])
{
    String sql1="insert into test1(id,name) values(7,'德芬迪')";   
    Connection conn = getConnection();
    try {       
        Statement stmt = conn.createStatement();        
        int iRet = stmt.executeUpdate(sql1);        
        if(iRet >= 0)
        {           
            System.out.println("执行成功");
        }       
    } catch (SQLException e) {      
        e.printStackTrace();
    }

}
}
'or '1' = 1'永真式
PrepareStatement接口是Statement接口的子接口,
他继承了Statement接口的所有功能。
它主要是拿来解决我们使用Statement对象多次执行同一个SQL语句的效率问题的。
ParperStatement接口的机制是在数据库支持预编译的情况下预先将SQL语句编译,
当多次执行这条SQL语句时,可以直接执行编译好的SQL语句,
这样就大大提高了程序的灵活性和执行效率。

1>方法executeQuery 
用于产生单个结果集(ResultSet)的语句,例如 SELECT 语句。 
被使用最多的执行 SQL 语句的方法。这个方法被用来执行 SELECT 语句,
它几乎是使用最多的 SQL 语句。
但也只能执行查询语句,执行后返回代表查询结果的ResultSet对象。

 2>方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零

3>方法execute:
可用于执行任何SQL语句,返回一个boolean值,表明执行该SQL语句是否返回了ResultSet。如果执行后第一个结果是ResultSet,则返回true,否则返回false。但它执行SQL语句时比较麻烦,通常我们没有必要使用execute方法来执行SQL语句,而是使用executeQuery或executeUpdate更适合,但如果在不清楚SQL语句的类型时则只能使用execute方法来执行该SQL语句了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.hexiang.utils.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import org.apache.log4j.Logger; public class DBConnection { /** * 获得与数据库的连接 * * @param path * @return Connection */ public static Connection getConn(String classDriver, String url, String user, String pwd) { try { Class.forName(classDriver); return DriverManager.getConnection(url, user, pwd); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(DataSource dataSource) { try { return dataSource.getConnection(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(String jndiName) { try { Context ctx; ctx = new InitialContext(); DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/" + jndiName); return dataSource.getConnection(); } catch (NamingException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(Properties properties) { try { String driver = properties.getProperty("jdbc.driverClassName"); String url = properties.getProperty("jdbc.url"); String user = properties.getProperty("jdbc.username"); String password = properties.getProperty("jdbc.password"); Class.forName(driver); return DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } /** * oracle连接 * * @param path * @return Connection */ public static Connection getOracleConn(String

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值