JDBC-java操作数据库
1.基本结构:
package com.atguigu.servlets;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;public class JDBCemo {public static void main(String[] args) throws Exception{String url = "jdbc:mysql:///mysql";String username = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, username, password);String sql = "update account set money = 2000 where id = 1";Statement stmt = conn.createStatement();int count = stmt.executeUpdate(sql);System.out.println(count);stmt.close();conn.close();} }
2.详细api解释:
①DriverManager(驱动管理类)作用:注册驱动 获取数据库连接
②Connectiong作用:获取执行sql的对象:createStatement() prepareStatement(sql)
③Statement作用:执行sql语句 int executeUpdate(sql)执行DML(数据操作语句:数据进行操作)、DDL(数据定义语句:操作数据库对象的结构) 返回影响的行数
ResultSet executeQuery(sql)执行DQL语句(数据查询语句:进行数据的查询) 返回结果集
④ResultSet作用:封装了DQL查询的结果
ResultSet stmt.executeQuery(sql)
ResultSet中定义的方法:
boolean next():向前移动一行,判断当前行是否为有效行,true为有效, false为无效
xxx getXxx(参数)获取数据
参数:int 列的编号 String:列的名称
package com.atguigu.servlets;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;public class JDBCemo {public static void main(String[] args) throws Exception{String url = "jdbc:mysql:///mysql";String username = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, username, password);String sql = "select * from account";Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sql);while (rs.next()){int id = rs.getInt(1);String name = rs.getString(2);double money = rs.getDouble(3);System.out.println(id);System.out.println(name);System.out.println(money);}stmt.close();conn.close();} }
⑤PreparedStatement作用:预编译sql语句并执行
优点:预编译sql,性能更好;防止sql注入;
想要打开预编译功能,需要在连接的url后加入一串代码
String url = "jdbc:mysql:///mysql&userServerPreStmts=true";
package com.atguigu.servlets;import java.sql.*;public class JDBCemo {public static void main(String[] args) throws Exception{String url = "jdbc:mysql:///mysql";String username = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, username, password);String sql = "select * from user where name = ? and password = ?";PreparedStatement pstmt = conn.prepareStatement(sql);String inname = "wangwu";int inps = 123456;pstmt.setString(1, inname);pstmt.setInt(2, inps);pstmt.executeQuery();pstmt.close();conn.close();} }
获取对象:
(1)注册驱动
Class.forName(("com.mysql.jdbc.Driver"));
mqsql5之后的驱动包就可以省略注册驱动的步骤
(2)获取连接对象
Connection conn = DriverManager.getConnection(url, username, password);
其中,url的语法:
jdbc:mysql://ip地址(域名:localhost)/数据库名称
实例: String url = "jdbc:mysql://localhost/mysql";
细节:如果连接的是本机mysql数据库,端口号为3306,则可以简写
String url = "jdbc:mysql:///mysql";