JDBC入门
来源:互联网 发布:线切割切圆怎么编程 编辑:程序博客网 时间:2024/06/04 20:03
什么是JDBC?
使用java程序发送sql语句到数据库服务器端执行,这叫用到了JDBC技术!!!!
jdbc是Oracle-Sun公司设计的一套专门用于java程序操作数据库的接口。使用jdbc发送sql条件
连接mysql数据库:数据库主机端口数据库用户名数据库密码连接的数据库
三种连接到JDBC的方法
1.直接创建驱动类Driver对象
2.使用驱动管理类,来管理我们的驱动程序,并获取连接
3.将Driver实现类加载到我们的内存中,static代码块就会自动执行
演示:
public class DriverDemo { private static String url="jdbc:mysql://localhost:3306/day20"; private static String user="root"; private static String password="123"; public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //conn1(); //conn2(); conn3(); } //直连 private static void conn1() throws Exception{ //创建一个驱动类对象Driver Driver driver = new com.mysql.jdbc.Driver(); Properties info = new Properties(); info.setProperty("user", user); info.setProperty("password", password); Connection conn = driver.connect(url, info); //打印这个连接对象,如果连接对象不为空,就说明我们已经成功获取到了连接对象 System.out.println(conn); } //使用驱动管理类,来管理我们的驱动程序,并获取连接 private static void conn2() throws Exception{ Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); Connection conn = DriverManager.getConnection(url, user, password); //打印这个连接对象,如果连接对象不为空,就说明我们已经成功获取到了连接对象 System.out.println(conn); } //注册驱动,我们发现mysql驱动程序的Driver实现类已经帮我们在静态代码块中注册好了驱动, //我们在此时只需要将Driver实现类加载到我们的内存中,static代码块就会自动执行,我们的驱动也就自动注册了 private static void conn3() throws Exception{ Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password); System.out.println(conn); }}
执行DDL操作
public class StatementDemo { private static String url="jdbc:mysql://localhost:3306/day20"; private static String user="root"; private static String password="123"; public static void main(String[] args) throws Exception { //注册驱动 Class.forName("com.mysql.jdbc.Driver"); //通过驱动管理类连接 Connection conn = DriverManager.getConnection(url, user, password); //创建语句执行者 Statement cs = conn.createStatement(); //创建需要执行的sql语句 String sql = "CREATE TABLE superman("+ "id INT,"+ "NAME VARCHAR(20),"+ "age INT"+ ");"; int exu = cs.executeUpdate(sql); //打印一下影响的结果 System.out.println(exu); //0 conn.close(); cs.close(); }}
执行DML操作
public class Demo2 { /** * @param args * @throws SQLException */ public static void main(String[] args) throws SQLException { // TODO Auto-generated method stub Connection conn = JDBCUtil.getConn(); Statement cs = conn.createStatement(); String sql="UPDATE superman SET NAME='战斗暴龙兽' WHERE id=1;"; int exu = cs.executeUpdate(sql); System.out.println(exu); String sql2="INSERT INTO superman VALUES(4,'可达鸭',50);"; int exu2 = cs.executeUpdate(sql2); System.out.println(exu2); JDBCUtil.close(conn, cs, null); }}
执行DQL查询操作
public class Demo3 { /** * @param args * @throws SQLException */ public static void main(String[] args) throws SQLException { // TODO Auto-generated method stub Connection conn = JDBCUtil.getConn(); String sql="SELECT * FROM superman;"; Statement cs = conn.createStatement(); ResultSet eq = cs.executeQuery(sql); while(eq.next()){ System.out.println(eq.getInt("id")+"--"+eq.getString("name")+"--"+eq.getInt("age")); } JDBCUtil.close(conn, cs, eq); }}
PreparedStatement对象执行SQL操作
public class PreparedstateDemo { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Connection conn = JDBCUtil.getConn(); String sql = "SELECT * FROM superman WHERE id=?;"; //获取预编译对象 PreparedStatement ps = conn.prepareStatement(sql); //给问号赋值 ps.setInt(1, 2); ResultSet eq = ps.executeQuery(); while(eq.next()){ System.out.println(eq.getInt("id")+"--"+eq.getString("name")+"--"+eq.getInt("age")); } String sq2 = "INSERT INTO superman VALUES(?,?,?);"; PreparedStatement ps2 = conn.prepareStatement(sq2); //给问号赋值 ps2.setInt(1, 5); ps2.setString(2, "天地无用"); ps2.setInt(3, 200); int i = ps2.executeUpdate(); System.out.println(i); JDBCUtil.close(conn, ps, eq); JDBCUtil.close(conn, ps2, eq); }}
这种方法对sql注入有一定的防御能力。
CallableStatement对象执行存储过程
public class Demo { public static void main(String[] args) { //执行带有输入参数存储过程 //testIn(); //执行带有输出参数的存储过程 testOut(); } private static void testOut() { Connection conn =null; CallableStatement stmt = null; ResultSet rs = null; try{ conn = JDBCUtil.getConn(); String sql = "CALL pro_QueryNameById(?,?);"; stmt = conn.prepareCall(sql); //给问号赋值 stmt.setInt(1, 2); //如果存储过程带有输出参数的时候,首先需要注册,输出参数的类型 //void registerOutParameter(int parameterIndex,int sqlType) stmt.registerOutParameter(2, java.sql.Types.VARCHAR); //发送参数并执行sql stmt.executeQuery(); //从stmt中取出输出参数的结果 System.out.println(stmt.getString(2)); }catch(Exception e){ e.printStackTrace(); }finally{ //释放资源 JDBCUtil.close(conn, stmt, rs); } } private static void testIn() { Connection conn =null; CallableStatement stmt = null; ResultSet rs = null; try{ conn = JDBCUtil.getConn(); String sql = "CALL pro_QueryById(?);"; stmt = conn.prepareCall(sql); //给问号设置值 stmt.setInt(1, 2); //发送参数并执行sql,只能调用excuteQuery() rs = stmt.executeQuery(); if (rs.next()) { System.out.println(rs.getInt(1)+"--"+rs.getString(2)); } }catch(Exception e){ e.printStackTrace(); }finally{ //释放资源 JDBCUtil.close(conn, stmt, rs); } }}
阅读全文
0 0
- JDBC 入门
- JDBC 入门
- JDBC入门
- JDBC入门
- JDBC入门
- JDBC入门
- JDBC入门
- JDBC入门
- JDBC入门
- JDBC入门
- JDBC入门
- jdbc入门
- JDBC入门
- JDBC入门
- JDBC 入门
- JDBC入门
- JDBC入门
- JDBC入门
- 表单和ajax中的post请求&&后台获取数据方法
- Android XML绘图之 Shape
- Spring+Spring MVC+MyBatis实现SSM框架整合详细教程
- 6.8小组交流总结
- Android【官方教程】NDK 入门
- JDBC入门
- transform的使用
- A
- Hdu 1003 最大子段和
- STM32与HC-SR04超声波测距
- 《初恋50次》附百度云盘链接
- Unsupported Media Type 415问题解决办法(Ajax)
- 剑指offer——旋转数组的最小数字(二分法思路)
- 【Python】引用和对象的理解