JDBC练习汇总

由于在配置Mysql的时候忘记截图了,又不想再做一遍所以在这里总结一下我的实践过程。

1、connector.jar文件部署

在HOW2J的文章中说mysql-connector-java-5.0.8-bin.jar(我下载的版本)应该放在项目(也就是我们创建的project)的lib文件夹中。

其实部署connector.jar文件有两种方式。

1.本地部署

这就是HOW2J中所说的放在project的lib文件夹中。

操作方式:

  1. 打开 Eclipse,并打开您的项目。

  2. 右键单击项目,选择 New -> Folder。在弹出的对话框中,输入文件夹名称为 "lib",然后单击 Finish。

  3. 将 connector.jar 文件复制到刚创建的 lib 文件夹中。

  4. 右键单击项目,选择 Properties。

  5. 在左侧窗格中,选择 Java Build Path。

  6. 在右侧窗格中,选择 Libraries 选项卡。

  7. 单击 Add JARs... 按钮,并选择刚才添加到 lib 文件夹中的 connector.jar 文件。

  8. 单击 Apply 按钮,然后单击 OK。

优点:

  1. 方便管理:将所有库文件放在一个单独的文件夹中,可以更方便地进行管理和维护。如果您需要添加、删除或更新库文件,只需在 lib 文件夹中进行操作,而不必在项目的各个位置进行操作。
  2. 稳定性和安全性:将库文件放在独立的文件夹中,可以保持项目的稳定性和安全性。库文件很少会发生变化,因此将它们放在独立的文件夹中可以防止它们被误删除或被其他文件覆盖。

  3. 可移植性:将库文件放在独立的文件夹中可以提高项目的可移植性。如果您需要将项目移植到其他位置或分发给其他人使用,只需将整个 lib 文件夹复制到目标位置即可。

  4. 可重复性:将库文件放在独立的文件夹中可以提高项目的可重复性。如果您需要在不同的开发环境中进行开发和测试,只需使用相同的 lib 文件夹即可确保所有的库文件都是一致的。

缺点:

  1. 版本冲突:如果在lib文件夹中存放了多个版本的connector.jar文件,这可能会导致版本冲突和不兼容问题。

  2. 管理困难:如果有多个应用程序需要使用connector.jar文件,将其存放在每个应用程序的lib文件夹中,可能会导致管理和维护困难。

  3. 安全问题:如果connector.jar文件包含敏感信息或代码,将其存放在公共lib文件夹中可能会导致安全问题,因为任何应用程序都可以访问这些文件。

  4. 性能问题:在公共lib文件夹中存放大量的jar文件可能会导致性能问题,因为每个应用程序都需要加载这些文件。

2.项目外部署

connetor.jar文件放在项目外部独立文件夹中,所有项目共享。

部署位置: 

  1. 在应用服务器中添加connector.jar文件:如果应用程序运行在应用服务器上(如Tomcat、Jboss、Weblogic等),可以将connector.jar文件添加到应用服务器的共享库或lib目录中。这样,所有部署在该应用服务器上的应用程序都可以访问该文件。

  2. 将connector.jar文件添加到JVM的类路径中:可以将connector.jar文件添加到Java虚拟机(JVM)的类路径中。这可以通过设置CLASSPATH环境变量或通过命令行选项实现。这样,所有运行在该JVM上的Java应用程序都可以访问该文件。

  3. 使用Maven仓库:如果使用的是Maven构建工具,可以将connector.jar文件部署到Maven仓库中,并在您的项目中添加对该文件的依赖。这样,您的项目将从Maven仓库中自动下载该文件

  4. 单独建立JDBC_Driver文件夹:这是我的操作方式,将connector.jar文件单独放在新建的JDBC_Driver文件夹中适合新手进行操作,这样可以避免改动服务器,JVM和Maven仓库造成不必要的麻烦

eclipse操作:

  1. 右键单击项目,选择 Properties。

  2. 在左侧窗格中,选择 Java Build Path。

  3. 在右侧窗格中,选择 Libraries 选项卡。

  4. 单击 Add External JARs... 按钮,并选择connector.jar 文件。

  5. 单击 Apply 按钮,然后单击 OK。

优点:

  1. 方便性:将connector.jar文件进行全局部署后,可以避免在每个应用程序中重复存储相同的文件,从而节省存储空间,并且方便管理和维护。

  2. 可靠性:通过全局部署,可以确保所有应用程序都使用相同版本的connector.jar文件,避免了版本不一致和兼容性问题。

  3. 性能:通过全局部署,可以减少应用程序的启动时间和内存使用,因为所有应用程序都可以共享相同的文件。

缺点:

  1. 安全性:将connector.jar文件进行全局部署可能会带来安全问题,因为任何应用程序都可以访问该文件。如果该文件包含敏感信息或代码,可能会引起安全隐患。

  2. 可维护性:全局部署可能会带来可维护性问题,特别是在多个团队或部门使用同一文件时。如果多个应用程序都依赖于相同的connector.jar文件,当需要更新该文件时,可能需要与多个团队或部门进行协调和沟通,这可能会增加更新的复杂性和时间。

  3. 扩展性:全局部署可能会影响应用程序的扩展性,特别是在需要使用不同版本的connector.jar文件时。如果需要在应用程序中使用不同版本的connector.jar文件,全局部署可能会变得更加困难。

2、HTTP Status 500问题

通常是是由服务器端的错误导致的

我遇到的500问题有两种:

1.An exception occurred proocessing JSPpage

2.No suitable driver found for jdbc

第一种问题一般是由于没有系统找到connetor.jar文件导致的,检查一下connector.jar文件的配置路径是否正确并尝试重新配置即可。第二种问题显示未能找到合适的JDBC驱动程序,目前暂不知到具体原因,将jsp的Java代码移植到新的Java文件中通过debug之后就解决了。

3、MySQL数据库操作

我使用的是MySQL自带的test数据库

1.打开MySQL

win+R或(option+R),在搜索框中输入cmd呼出命令行输入mysql -u用户名 -p密码打开mysql。

通过图形用户界面(如MySQL -front)打开MySQL

2.新建数据表

右键数据库->选择新建->选择表格

 

3.设置数据表的列属性

enter键新建,双击鼠标左键进行修改列属性(或者单击右键选择属性进行修改即可)。需要注意的是主键的设置要在主索引这一栏修改,在列属性中是设置不了的。

4、JDBC操作

获取statement对象

插入数据 

我使用的插入数据语句如下

INSERT INTO student(SNumber, SNam, SSex, SScore) VALUES ('111115', '张三', '男', 85.5);

也可以选择逐个元素插入 

String sql = "INSERT INTO student (SNumber, SName, SSex) VALUES (?, ?, ?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setint(1, 111115);
statement.setString(2, "张三");
statement.setString(3, "男");
statement.setString(4, 85.5);
int rowsInserted = statement.executeUpdate();

 删除数据(无图)

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

public class DeleteDemo {

    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement stmt = null;

        try {
            // 1. 获取数据库连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false", "root", "password");

            // 2. 创建 PreparedStatement 对象
            stmt = conn.prepareStatement("DELETE FROM student WHERE id = ?");

            // 3. 设置参数
            stmt.setInt(1, 1);

            // 4. 执行删除操作
            int result = stmt.executeUpdate();

            // 5. 输出执行结果
            System.out.println("删除了 " + result + " 条数据");
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 6. 关闭 Statement 和 Connection 对象
            try {
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

遇到的问题

1、Exception in thread "main" java.lang.Error: Unresolved compilation problem:at shop.TestJDBC.main(TestJDBC.java:9)

解决经历:这个问题出现在我的jsp文件编译,导致这个问题的原因是编译问题。在排除语法错误之后我将代码迁移到Java文件中重新编译得到解决。

2、there is a error in workplace

解决经历:原因不明,在使用debug后解决   

3、

解决经历:我原本想在一个文件中完成所有操作。当我在插入操作的Java文档中重新写删除代码的代码时出现这个问题。之后我重新创建一个Java文件解决了这个问题。 

4、在关闭数据库的finally关闭statement的代码中出现c cannot be solved 。原因不明,暂未解决。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值