关闭

JAVA数据库连接-JDBC

406人阅读 评论(6) 收藏 举报

       JDBC(Java Data BaseConnectivity ,java数据库连接)是一种用于执行SQL语句的JAVA API,,它由一组用Java语言编写的类和接口组成。

        有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。我们通过JDBC统一操作SyBase数据库,Oracle数据库,Informix数据库,我们不必为程序换了数据库而重新编写程序,符合JAVA语言“编写一次,处处运行的”优势。

         JDBC只做三件事:与数据库建立连接、发送操作数据库的语句,并处理结果。

与数据库建立连接有两种方式

  1. Jdbc.properties文件

 

 

代码中获得配置文件中的信息:

privatestatic final String DRIVERCLASS=ResourceBundle.getBundle("jdbc").getString("DRIVERCLASS");
privatestatic final String URL =ResourceBundle.getBundle("jdbc").getString("URL");privatestatic final String USERNAME=ResourceBundle.getBundle("jdbc").getString("USERNAME");
privatestatic final String PASSWORD=ResourceBundle.getBundle("jdbc").getString("PASSWORD");
 
//注册
Class.forName(DRIVERCLASS);
// 获取连接
Connectioncon = DriverManager.getConnection(URL, USERNAME, PASSWORD);

  1. 代码

//注册成功
DriverManager.registerDriver(newDriver());
//获取数据连接
Stringurl = "jdbc:mysql://localhost:3306/day17";
Stringusername = "root";
Stringpassword = "mysql";
Connectioncon = DriverManager.getConnection(url, username, password);


发送操作数据库的语句

  1. sql注入的弊端

//通过连接对象获取一个可以操作sql的statement对象
Statementst = con.createStatement();
 
//执行时sql语句
String sql = "select * from user
whereusername='"+ username + "' and password='" + password +"'"
ResultSet rs = st.executeQuery(sql);//执行sql语句

  1. 成功避免了sql注入的弊端

Stringsql = "select * from user where username=? and password=?";
//获取操作sql语句对象
PreparedStatementpst  = con.prepareStatement(sql);//将sql语句进行预加载
ResultSet rs =pst.executeQuery();//执行sql语句
//需要对占位符进行传参
pst.setString(1,username);// 对其中的占位符进行填充
pst.setString(2,password);// 对其中的占位符进行填充

对结果的处理

增删改的结果都是影响的行数,通过判断行数的大小,判断执行是否成功。

查询的结果集是 ResultSet

//操作结果集
if(rs.next()) {
Useruser = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
returnuser;
}


     在学习JDBC的过程中,我一直想起ODBC,两者虽然面向的IDE不同,但原理都相同。ODBC可以封装成SQLHelper,JDBC应该也可以。

0
2

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:132500次
    • 积分:5479
    • 等级:
    • 排名:第5033名
    • 原创:163篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1659条
    最新评论