吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2611|回复: 8
收起左侧

[Java 转载] java学习笔记-JDBC

[复制链接]
猫颜 发表于 2020-2-25 11:08
个人学习的笔记,会常常发的
1.加载驱动(以oracle为例子)

```java
Class.forName("oracle.jdbc.driver.OracleDriver");
```
2.通过DriverManager连接数据库(返回值为一个Connection对象)

```java
DriverManager.getConnection(url, UserName, password);
```
3.Statement方法不介绍了,只介绍PerparedStatement,因为效率高,并且防止SQL的注入

```java
PreparedStatement preparedStatement = connection.prepareStatement(sql);
```
在这里,PreparedStatement的sql语句可以使用占位符?来替代
例如:

```java
PreparedStatement preparedStatement = connection.prepareStatement("insert into Persons values(null,?)");
```
4.添加数据

```java
//preparedStatement.setString(parameterIndex, x);
preparedStatement.setString(1, “数据”);
```
5.提交数据

```java
preparedStatement.executeUpdata();
//这里不需要添加参数,因为他已经储存了预编译的SQL语句
```
6.获取返回值
7.释放资源

tips:对于数据的增删改查,都推荐改成手动提交,若提交失败,可数据回流
例子:

```java
package com.mysqltest.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class SqlTest {
        public static void main(String[] args) throws SQLException {
                //封装成工具类加载驱动
                Connection connection = JDBCUtil.getConnection();
                //设置为手动提交
                connection.setAutoCommit(false);
                //创建sql语句
                String sql = "insert into Persons values(?,?,?,?,?)";
                //创建对象
                PreparedStatement preparedStatement = connection.prepareStatement(sql);
                //传入数据
                preparedStatement.setString(0, "hello");
                preparedStatement.setInt(1, 18);
                preparedStatement.setString(2, "hello");
                preparedStatement.setString(3, "hello");
                preparedStatement.setString(4, "hello");
                try {
                        //提交数据
                        int i = preparedStatement.executeUpdate();
                        connection.commit();
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        //数据回滚
                        connection.rollback();
                        e.printStackTrace();
                } finally {
                        //关闭资源
                        connection.close();
                        preparedStatement.close();
                }
        }
}

```
最开始的加载驱动使用了一个工具类
如下:

```java
package com.mysqltest.test;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCUtil {
        private static String driver;
        private static String url;
        private static String usernmae;
        private static String password;
        static {
                String dbproperties = "/db.properties";
                //获取属性文件的内容
                Properties properties = new Properties();
                //获取属性文件的流对象
                InputStream inputStream = JDBCUtil.class.getResourceAsStream(dbproperties);
                try {
                        //加载属性文件
                        properties.load(inputStream);
                        //获取参数
                        driver = properties.getProperty("driver");
                        url = properties.getProperty("url");
                        usernmae = properties.getProperty("usename");
                        password = properties.getProperty("password");
                        //加载驱动
                        Class.forName(driver);
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (ClassNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
        public static Connection getConnection() {
                Connection connection = null;
                try {
                        connection = DriverManager.getConnection(url, usernmae, password);
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                return connection;
        }
       
}

```
重点提示:JDBCUtil.class.getResourceAsStream()==这个路径就是src!!!==

免费评分

参与人数 3吾爱币 +2 热心值 +3 收起 理由
Helluva + 1 + 1 不小心点到了没用 投个今天的吾爱币和热心值 老铁666 不错不错 加油 老铁 .
YaoYao93 + 1 我很赞同!
heyong + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ooops 发表于 2020-2-25 12:02
怎么不学现在流行的python ?
YaoYao93 发表于 2020-2-25 15:42
小小韭菜 发表于 2020-2-25 17:35
 楼主| 猫颜 发表于 2020-2-27 11:46
YaoYao93 发表于 2020-2-25 15:42
自从用上框架后,jdbc的连接方法已经忘记了

哈哈哈哈哈哈,我现在才开始学框架
 楼主| 猫颜 发表于 2020-2-27 11:48
ooops 发表于 2020-2-25 12:02
怎么不学现在流行的python ?

但是我大java排名基本都是第一的呀!!!嘻嘻嘻嘻嘻嘻嘻
YuYu121 发表于 2020-2-28 19:07
哈哈哈哈,我还没有学到框架
Wuuuu 发表于 2020-2-28 20:00
看起来论坛不支持 MarkDown的格式呀
 楼主| 猫颜 发表于 2020-3-2 08:01
Wuuuu 发表于 2020-2-28 20:00
看起来论坛不支持 MarkDown的格式呀

是的,这点很难受
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-8 01:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表