JDBC学习(一)
JDBC学习:
JAVA的数据获取方式:
1 直接声明变量并赋值.
2 Scanner类控制台输入
3 IO流(将硬盘存储中的数据读取到java中)
4 scoket+io
5 从数据库中获取
JDBC的概念:
问题:
java和数据库之间的沟通不一致
解决:
数据库厂商对外提供java支持的接口
使用:
创建类实现接口(操作数据库)
数据库厂商对外提供了数据库操作的驱动包.(翻译官)
结论:
JDBC其实就是数据厂商对外提供的能够对自己的数据进行操作的驱动包也就是jar文件.
JDBC的使用:
jdbc完成新增
jdbc完成修改
jdbc完成删除
jdbc的事务
jdbc完成查询
jdbc的MVC思想
jdbc新增学习:
1 导入jdbc驱动包
2 加载驱动
3 常见数据库连接
4 创建数据库命令对象
5 创建sql命令
6 执行sql
7 关闭资源
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190323120649180.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI1ODkwOA==,size_16,color_FFFFFF,t_70)
常见的jdbc错误:
**a ClassNotFoundException:
驱动类未找到.
b java.sql.SQLException: No suitable driver found for :thin:@localhost:1521:orcl
URL错误
c java.sql.SQLException: ORA-01017: invalid username/password; logon denied
用户 名或密码错误
d java.sql.SQLSyntaxErrorException: ORA-00900: 无效 SQL 语句
Sql语句错误
e java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (SCOTT.PK_DEPT)
主键冲突**
@author wuyupku
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestInsert1 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1 加载驱动类
Class.forName(“oracle.jdbc.driver.OracleDriver”);
//2 获取数据库连接对象(连接指定的数据库)
Connection conn=DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”,“scott”,“oracle”);
//3 获取sql命令对象(编译和发送sql命令给数据库)
Statement stmt= conn. createStatment();
//4 创建sql命令
String sql=“insert into dept values(92,‘吃鸡学院’,‘北京’)”;
Stting sql = "
//5 执行sql命令
int i=stmt.executeUpdate(sql);//没有执行成功,返回-1
System.out.println(“执行结果:”+i);//执行成功,返回1
//6 关闭资源
stmt.close();
conn.close();
}
}
优化
public class TestInsert2 {
public static void main(String[] args){
//声明jdbc变量
Connection conn=null;
Statement stmt=null;
//声明JDBC参数
String driver=“oracle.jdbc.driver.OracleDriver”;
String url=“jdbc:oracle:thin:@localhost:1521:orcl”;
String username=“scott”;
String password=“oracle”;
//1 加载驱动类
try {
Class.forName(driver);
//2 获取数据库连接对象(连接指定的数据库)
conn=DriverManager.getConnection(url,username,password);
//3 获取sql命令对象(编译和发送sql命令给数据库)
stmt=conn.createStatement();
//4 创建sql命令
String sql=“insert into dept values(97,‘吃鸡学院’,‘北京’)”;
//5 指定sql命令
int i=stmt.executeUpdate(sql);
System.out.println(“执行结果:”+i);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//6 关闭资源
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}