时间:2021-07-01 10:21:17 帮助过:9人阅读
为了方便管理jar包,我们在项目路径下新建一个lib文件夹用来专门存放炸包。
1、
2、右键要添加的jar包,选择Add to BuildPath添加jar包。
JDBC定义了一个标准的驱动接口Driver(java.sql包下的),每种数据库的驱动包都提供了该类的实现类。拿
mySql举例:mySql驱动包提供了实现类:Driver类(com.mysql.jdbc包下的)。工具类DriverManager提供了注册驱
动的方法 registerDriver()。但是不推荐使用这种方法注册驱动,因为:
1、通过观察源码发现这样注册驱动会导致驱动被注册了2次。
2、不易于后期的维护和修改。
而通过查看Driver类(com.mysql.jdbc包下的)发现在这个类的静态代码块已经将自己给注册了,所以就可以
通过反射的方法进行注册。
举例:
Class.forName("com.mysql.jdbc.Driver");
通过工具类DriverManager提供的getConnection(url,username,password)方法就可以获得数据库的连接。三个
参数分别为:
1、url:连接数据库的位置、他由三部分组成的,之间用 : 进行分割。
* 第一部分是jdbc,表示连接数据库的标准,是固定的;
* 第二部分是数据库名称,可以将前两部分理解为网址上的https: ,同网址一样他与第三部分的数据库路径
也是由//分割的;
* 第三部分是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,mysql的第三部分分别由数据库服
务器的IP地址(localhost)、端口号(3306),以及你要连接的库的名称(DATABASE)组成;
2、username:数据库的用户名,每个数据库在安装的时候都会让你设置用户名和密码。
3、password:数据库连接的密码。
举例:
String url="jdbc:mysql://localhost:3306/mydb"; String user="boom"; String pwd="boom"; //获取连接 Connection connection = DriverManager.getConnection(url, user, pwd);
找到要打开的“软件”输入用户名和密码之后,就要获得“聊天窗口了”。JDBC中有2种方式获得SQL语句的执行平台,调
用者都是连接类Connection。
1、创建一个 Statement 对象来将 SQL 语句发送到数据库 :createStatement(),这种方法执行SQL语句的话,向
数据库传入的参数要拼到sql里,有注入安全问题。
2、创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库 :prepareStatement(String sql) ,
这种方法执行SQL语句时会用占位符给参数占位,通过方法给占位符赋值,不会有注入问题。
数据库的增删改查对应着2个方法,查询方法 - executeQuery,增删改方法 - executeUpdate() 。
* Statement
1、执行给定的 SQL 语句,该语句返回单个 ResultSet 对象 :executeQuery(String sql)
2、执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句
(如SQL,DDL语句) : executeUpdate(String sql) 返回值为int - 影响的行数。
* PreparedStatement
1、在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象 :executeQuery()
2、在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)
语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句 :executeUpdate()
3、将指定参数设置为给定 Java String 值 : setString(int parameterIndex - 占位符位置从一开始, String x)
set....后边的类型根据你要传入值得类型来定,如:setInt(int parameterIndex, int x),具体可传参数类型请看JDK。
* ResultSet(结果集)
1、以 Java 编程语言中 String 的形式获取此 ResultSet 对象的当前行中指定列的值 :
getString(int columnIndex - 从第一列开始) ,不推荐。
2、以 Java 编程语言中 String 的形式获取此 ResultSet 对象的当前行中指定列的值 :
getTime(int columnIndex - 列名) ,列名一定要写对哦!!!推荐。
栗子1(Statement的查询):
1 //注册驱动 2 Class.forName("com.mysql.jdbc.Driver"); 3 String url="jdbc:mysql://localhost:3306/mydb"; 4 String user="root"; 5 String pwd="root"; 6 //获取连接 7 Connection connection = DriverManager.getConnection(url, user, pwd); 8 //获取SQL语句的执行平台 9 Statement statement = connection.createStatement(); 10 //编写SQL语句 11 String sql="SELECT * FROM sort;"; 12 //执行SQL语句返回结果集 13 ResultSet query = statement.executeQuery(sql); 14 //打印列名(为了好看) 15 System.out.println("sid\tsname\tsprice\tsdesc"); 16 System.out.println("-------------------------------"); 17 //循环处理结果集 18 while(query.next()){ 19 System.out.println(query.getString("sid")+"\t"+query.getString("sname")+"\t" 20 +query.getString("sprice")+"\t"+query.getString("sdesc")); 21 } 22 //关闭资源 23 query.close(); 24 connection.close(); 25 statement.close(); 26 }
栗子2(Statement的修改):
//注册驱动 Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/mydb"; String user="root"; String pwd="root"; //获取连接 Connection connection = DriverManager.getConnection(url, user, pwd); //获取SQL语句的执行平台 Statement statement = connection.createStatement(); //执行SQL语句 int row = statement.executeUpdate("INSERT INTO sort(sname,sprice,sdesc) VALUES(‘充气娃娃‘,160,‘羞羞的‘);"); System.out.println(row); //关闭资源 query.close(); connection.close(); statement.close(); }
栗子3(PreparedStatement的模拟登录的功能):
public static void main(String[] args) throws Exception { //注册驱动 Class.forName("com.mysql.jdbc.Driver"); //获得连接 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); Scanner sc=new Scanner(System.in); System.out.println("请输入用户名"); String user = sc.nextLine(); System.out.println("请输入密码"); String pwd = sc.nextLine(); //根据输入的参数去库里查询,使用?占位符 String s="SELECT * FROM users WHERE uuser=? AND upwd=?"; //获取SQL语句的执行平台 PreparedStatement statement = connection.prepareStatement(s); //为占位符赋值 statement.setString(1, user); statement.setString(2, pwd); //执行SQL语句 ResultSet query = statement.executeQuery(); //如果不为空 if (query.next()) { System.out.println("登陆成功"); }else { System.out.println("登录失败"); } //关闭资源 query.close(); statement.close(); connection.close(); }
JAVA基础-JDBC(一)
标签:build path new api logs index 头像 register UI