JDBC学习
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JDBC学习,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3999字,纯文字阅读大概需要6分钟。
内容图文
JDBC的本质理解
1.JDBC是什么?
Java Database Connectivity(Java语言连接数据库)
2.JDBC的本质是什么?
JDBC是SUN公司定制的一套接口(interface)
接口都有调用者和实现者
面向接口调用,面向接口写实现类,这都属于面向接口编程。
java.sql.*
为什么要面向接口编程?
解耦合:降低程序的耦合度,提高程序的扩展力
多态机制就是非常典型的:面向抽象编程。
Animal a = new Cat();
Animal b = new Dog();
public void feed(Animal a){}
为什么要制定JDBC接口?
因为每一个数据库都有自己独特的实现原理。
驱动:就是一个jar包,所有的数据库驱动都是jar包的形式存在,jar包中有很多.class文件,这些.class文件就是对JDBC接口的实现。驱动不是SUN公司提供的,是各大数据库厂商提供,要到各个厂商官网中下载。
JDBC编程六步(背会)
第一步:注册驱动(告诉java程序即将连接的是哪个品牌的数据库)
第二部:获取连接(表示JVM的进程和数据库进程之间的通道打开了)
第三步:获取数据库操作对象(专门执行SQL语句的对象)
第四步:执行SQL语句(DQL,DML…)
第五步:处理查询结果集(只有当第四步是select语句时,才有这步)
第六步:释放资源(使用完资源之后一定要关闭资源)
插入
package JDBCStudy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Test1 {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/people","用户名","密码");
stmt = conn.createStatement();
String sql = "insert into user values(10,'123','123')";
int result = stmt.executeUpdate(sql);
System.out.println("影响的条数是:" + result);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
查询
getString(1)方法,无论数据库中是什么,取出来的都是String类型,参数是下标也就是第几列,下标从1开始,不是从0开始。
getString(“名字”)方法 通过列名称来查询(查询语句中的列名)
getInt() ...
package JDBCStudy;
import java.sql.*;
public class Test1 {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/people","用户名","密码");
stmt = conn.createStatement();
String sql = "select * from user";
rs = stmt.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("id");
String password = rs.getString("password");
String name = rs.getString("userName");
System.out.println("id: " + id + ",name: " + name + ",password " + password);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
"+内容+"
SQL注入问题
如果需要SQL注入用Statement,如果想给SQL语句传值,用PreparedStatement
使用PrepareStatemnet完成增删改操作
package JDBCStudy;
import java.sql.*;
public class Test2 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/people","用户名","密码");
String sql = "select * from user where id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1,1);
rs = ps.executeQuery();
//System.out.println(rs);
while(rs.next()){
int id = rs.getInt("id");
String password = rs.getString("password");
String name = rs.getString("userName");
System.out.println("id: " + id + ",name: " + name + ",password " + password);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
内容总结
以上是互联网集市为您收集整理的JDBC学习全部内容,希望文章能够帮你解决JDBC学习所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。