使用JDBC连接数据库

php中文网
发布: 2016-06-07 16:00:57
原创
2822人浏览过

jdbc是java数据库连接技术,他能实现java程序对各种数据库的访问。由一组使用java语言编写的类和接口组成,他们位于java.sql和javax.sql中。 JDBC是一种用于执行SQL语句的java API,JDBC并不能直接访问数据库,需要依赖于数据库厂商提供的JDBC驱动程序。 JDB

jdbc是java数据库连接技术,他能实现java程序对各种数据库的访问。由一组使用java语言编写的类和接口组成,他们位于java.sql和javax.sql中。

JDBC是一种用于执行SQL语句的java API,JDBC并不能直接访问数据库,需要依赖于数据库厂商提供的JDBC驱动程序。

JDBC的编程步骤如下:

1、通过Class.forName();注册驱动。

2、通过DriverManager类的getConnection()方法获得数据库连接。需要给出连接数据库的URL和数据库用户名和密码。

3、用数据库连接对象获得Statement对象,他可以用来执行SQL语句。

4、用Statement对象执行SQL语句。实质上SQL语句是数据库执行的,Statement只是负责发送SQL和接受结果。

5、处理执行结果。查询结果为ResultSet。

6、释放数据库的连接。

因为在开发和部署时可能用到不同的数据库,因此我们可以讲数据库信息写在配置文件中,让程序通过读取配置文件来获得这些信息。

下面看一个示例:

来画数字人直播
来画数字人直播

来画数字人自动化直播,无需请真人主播,即可实现24小时直播,无缝衔接各大直播平台。

来画数字人直播0
查看详情 来画数字人直播

首先看数据库(这里使用Oracle数据库):

\

该数据库公有7个字段,id字段是主键,代表新闻编号;title字段表示新闻标题;summary字段代表新闻摘要,content代表新闻内容;createdate表示新闻创建时间;mindifydate代表新闻最终修改时间。

然后在看java项目中的配置文件。在此之前需要在项目中导入Oracle数据库的驱动包ojdbc14.jar。

1

2

3

4

jdbc.driver_class=oracle.jdbc.driver.OracleDriver

jdbc.connection.url=jdbc\:oracle\:thin\:@localhost\:1521\:ORCL

jdbc.connection.username=myhr

jdbc.connection.password=myhr

登录后复制

然后看读取数据库配置文件的工具类。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

 

 

public class ConfigManager {

    private static ConfigManager configManager;//声明ConfigManager对象

    private static Properties properties;//声明Properties对象

     

    private ConfigManager(){

        String configPath = "database.properties";

        properties = new Properties();

        InputStream in = ConfigManager.class.getResourceAsStream(configPath);

        try {

            properties.load(in);

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

     

    private static ConfigManager getInstance(){

        if(configManager == null){

            configManager = new ConfigManager();

        }

        return configManager;

    }

     

    public String getString(String key){

        return properties.getProperty(key);

    }

}

登录后复制

然后看数据库操作代码,看JDBC如何具体操作数据库

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.sql.Timestamp;

import java.util.Date;

 

public class NewsDao {

    Connection connection = null;

    Statement statement = null;

    PreparedStatement pstmt = null;

    ResultSet rs = null;

    //建立与数据库之间的连接

    public void getConnection(){

        //调用工具类的相应方法,得到配置文件中的信息

        String driver = ConfigManager.getInstance().getString("jdbc.driver_class");

        String url = ConfigManager.getInstance().getString("jdbc.connection.url");

        String username = ConfigManager.getInstance().getString("jdbc.connection.username");

        String password = ConfigManager.getInstance().getString("jdbc.connection.password");

        try {

            //使用Class.froName方法加载驱动类

            Class.forName(driver);

            //DriverManager类的getConnection方法建立于数据库连接

            connection = DriverManager.getConnection(url, username, password);

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }

    //查询新闻

    public void getNewsList(){

        getConnection();

        String sql = "select * from news";

        try {

            //获得Statement对象

            statement = connection.createStatement();

            //执行SQL语句并得到ResultSet

            rs = statement.executeQuery(sql);

            //处理执行结果

            while(rs.next()){

                int id = rs.getInt("id");

                String title = rs.getString("title");

                String summary = rs.getString("summary");

                String content = rs.getString("content");

                String author = rs.getString("author");

                Timestamp time = rs.getTimestamp("createdate");

                Timestamp last = rs.getTimestamp("MIDIFYDATE");

                System.out.println("新闻id:"+id+" 标题:"+title+" 摘要:"+summary

            +" 内容:"+content+" 作者:"+author+" 创建时间:"+time+" 修改时间:"+last);

            }

        } catch (SQLException e) {

            e.printStackTrace();

        }finally{

            try {

                rs.close();

                statement.close();

                connection.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

             

        }

    }

    //添加新闻信息

    public void add(int id,String title,String summary,String content,

            String author,Date createdate,Date last){

        getConnection();

        String sql = "insert into news values(?,?,?,?,?,?,?)";

        try {

            pstmt = connection.prepareStatement(sql);

            pstmt.setInt(1, id);

            pstmt.setString(2, title);

            pstmt.setString(3, summary);

            pstmt.setString(4, content);

            pstmt.setString(5, author);

            pstmt.setTimestamp(6, new java.sql.Timestamp(createdate.getTime()));

            pstmt.setTimestamp(7, new java.sql.Timestamp(last.getTime()));

            int i = pstmt.executeUpdate();//i表示插入的行数

            if(i>0)

                System.out.println("插入成功!");

            else

                System.out.println("插入失败!");

        } catch (SQLException e) {

            e.printStackTrace();

        }finally{

            try {

                pstmt.close();

                connection.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

        }

         

    }

     

}

登录后复制

然后看测试类

1

2

3

4

5

6

7

8

9

10

11

import java.util.Date;

 

 

public class Test {

    public static void main(String[] args) {

        NewsDao nd = new NewsDao();

        nd.getNewsList();

        nd.add(2, "有蚊子", "今天竟然有蚊子", "今天竟然真的有蚊子,咬了我好几口!",

                "admin", new Date(), new Date());

    }

}

登录后复制

程序正常运行。

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号