无锡2019网站建设报价清单,做食品的网站设计要注意,WordPress情侣网站,江苏建设厅网站更新1.概述
jdbc#xff1a;java database connection#xff08;java与数据库连接#xff09;
java可以连接不同数据库#xff0c;不同数据库连接细节不同#xff0c;具体细节都由数据库自己实现 由java设计出一系列连接数据库的接口规范#xff0c;然后由不同的数据库开发…1.概述
jdbcjava database connectionjava与数据库连接
java可以连接不同数据库不同数据库连接细节不同具体细节都由数据库自己实现 由java设计出一系列连接数据库的接口规范然后由不同的数据库开发商去实现。jdbc实现了java与数据库之间的数据交互。
2.jdbc连接步骤
1.创建一个java项目创建一个lib包和idea包同级接着把需要连接的数据库jar包复制到lib内。 2.右键jar文件点击add as library这一步完成后就可以看见jar文件可以打开了这一步才是真正意义上的加入可以使用这个jar文件完成这一步后才可以点开jar包。 3.加载驱动
//反射机制加载 两个留一个Class.forName(com.mysql.cj.jdbc.Driver);//DriverManager.registerDriver(new Driver());//建立与数据库的连接获得连接对象String url jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezoneAsia/Shanghai;//serverTimezoneAsia/Shanghai是数据8才加上的以前版本的可以不用写String user root;String password 123456;//Connection connection DriverManager.getConnection(url, user, password);Connection connection DriverManager.getConnection(url, user, password);//发送sqlStatement statement connection.createStatement();statement.executeUpdate(insert into course(name) values(操作系统));//关闭连接statement.close();connection.close();3.jdbc连接两种方式
1。创建statement对象 创建statement对象此类方式对于sql语句主要是将sql语句与数据拼接发送到数据库进行实现
public void add(String NAME,String gender,String birthday,String phonenum,String adress,double height,int majorid) throws ClassNotFoundException, SQLException {//加载驱动Class.forName(com.mysql.cj.jdbc.Driver);//建立连接String urljdbc:mysql://127.0.0.1:3306/schooldb?serverTimezoneAsia/Shanghai;String userroot;String password123456;Connection connection DriverManager.getConnection(url,user ,password );//发送sqlStatement statement connection.createStatement();statement.executeUpdate(INSERT INTO student(NAME,gender,birthday,phonenum,adress,height,majorid) VALUES(NAME,gender,birthday,phonenum,adress,height,majorid));//关闭连接statement.close();connection.close();}2. 创建preparedStatement对象
创建preparedStatement对象此类方法运用占位符通过preparedStatement的setobject方法依次对占位符进行赋值有较高的安全性。
public void add(String NAME,String gender,String birthday,String phonenum,String adress,double height,int majorid) throws ClassNotFoundException, SQLException {//加载驱动Class.forName(com.mysql.cj.jdbc.Driver);//建立连接String urljdbc:mysql://127.0.0.1:3306/schooldb?serverTimezoneAsia/Shanghai;String userroot;String password123456;Connection connection DriverManager.getConnection(url,user ,password );//发送sql//预先编译 ?是占位符预先写好sql语句存入对象里面后面通过对象方法存入数据最后在发送完整的sql语句PreparedStatement preparedStatement connection.prepareStatement(insert into student(name,gender,birthday,phonenum,adress,height,majorid)values (?,?,?,?,?,?,?));preparedStatement.setObject(1,NAME);preparedStatement.setObject(2,gender);preparedStatement.setObject(3,birthday);preparedStatement.setObject(4,phonenum);preparedStatement.setObject(5,adress);preparedStatement.setObject(6,height);preparedStatement.setObject(7,majorid);//发送sql语句preparedStatement.executeUpdate();//关闭连接preparedStatement.close();connection.close();}4.两种jdbc连接方式的区别
preparedstatement 与 statement的区别 相同都是向数据库发送sql的 不同prepared statement 先预写sql语句数据使用占位然后通过setobject方法对依次赋值由1开始安全可靠 在赋值时进行检测防止被攻击 statement直接在sql语句1拼接出来安全性差例如可以在删除语句中拼接or 11这样每一条数据库信息都会被删除但是prepared statement会进行检测所有比statement安全一些
5.查数据
jdbc主要功能就是增删改查增删改方式差不多知道如何连接就可以发现规律增删改只需要对数据库数据进行操作查的话会传回数据与前面的略有不同。
对于查数据我们还是使用prepared statement使用他的executeQuery()方法此方法会返回一个set集合用来存储查找到的的数据数据可能很多所有我们可以使用arraylist来存储。
我们首先创建一个student类做举例
public class student {private int id;private String name;private String gender;private Date birthday;private String phonenum;private String adress;private Date regTime;private double heught;private int majorid;public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender gender;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday birthday;}public String getPhonenum() {return phonenum;}public void setPhonenum(String phonenum) {this.phonenum phonenum;}public String getAdress() {return adress;}public void setAdress(String adress) {this.adress adress;}public Date getRegTime() {return regTime;}public void setRegTime(Date regTime) {this.regTime regTime;}public double getHeught() {return heught;}public void setHeught(double heught) {this.heught heught;}public int getMajorid() {return majorid;}public void setMajorid(int majorid) {this.majorid majorid;}Overridepublic String toString() {return student{ id id , name name \ , gender gender \ , birthday birthday , phonenum phonenum \ , adress adress \ , regTime regTime , heught heught , majorid majorid };}
}这是我们数据库中学生表的属性。 public ArrayListstudent select() throws ClassNotFoundException, SQLException {//多条数据Class.forName(com.mysql.cj.jdbc.Driver);String urljdbc:mysql://127.0.0.1:3306/schooldb?serverTimezoneAsia/Shanghai;String userroot;String password123456;Connection connection DriverManager.getConnection(url,user ,password );PreparedStatement preparedStatement connection.prepareStatement(select * from student where name ?);preparedStatement.setObject(1,刘晨);ResultSet set preparedStatement.executeQuery();ArrayListstudent a new ArrayList();while (set.next()){student st new student();st.setId(set.getInt(id));//get里面的字段必须与数据库中要查找的数据的字段相同st.setGender(set.getString(gender));st.setBirthday(set.getDate(birthday));st.setName(set.getString(NAME));st.setHeught(set.getDouble(height));st.setAdress(set.getString(adress));st.setMajorid(set.getInt(majorid));st.setPhonenum(set.getString(phonenum));st.setRegTime(set.getDate(reg_time));a.add(st);}set.close();preparedStatement.close();connection.close();return a;}