用java程序向数据库插入数据遇到的几个问题

    通过java程序向数据库里面插入日志文件。。本来程序是正确的。能够顺利的执行。以前这是一个定时程序,基本上没出过问题。但今天我批量执行的时候问题就出来了。。真郁闷。。

    首先,程序顺利执行完了,但在后台页面查看的时候发现数据少了。在日志中有该条记录但在数据库中查找却没有,无缘无故少了部分数据。。当时很纳闷,真不知道问题出哪里了,一片茫然。。好好的程序,怎么一到我这里就出问题了呢??

    只能重新执行程序,并将后台打印结果重定向到文件中。。。结果一分析,发现在程序运行的过程中出现了很多的nullpointexception,怪了?哪来的空指针异常呢?由于异常信息记录的不是很详细。没法分析哪个地方出问题,只能继续更改程序。。把异常详细信息打印出来。后来一分析。原来是插入的内容超出了该表中对应字段的长度范围,导致数据没有插进去。只能更改数据库中表的字段了。还有一个问题就是Too many open files,上网搜了一下,这是linux的file-max设置太小了。后来改了一下就好了。。

   但还是有一个疑问,打开的文件我都关闭了的。怎么会出现这个错误呢?而且这些数据以前在导入的时候都没出现问题。怎么就现在出问题了呢?

 

   终于程序没问题了。。数据库也没问题了。。写了一个执行文件。将要执行的命令放进去。运行。。以为啥事都没有了,几个小时后一看后台日志。全是异常,找不到oracle.jdbc.driver.OracleDriver类,真郁闷。。又是自己一个不小心。。没有设置classpath,哎呀。。又耽误了好几个小时。。只能在执行文件中添加一句export classpath,终于ok了,

 

  本来一件很简单的事情。只需要几条命令就能搞定的事。让我整了好几个小时。。都是因为自己的粗心。如果一开始就能将后台运行情况记录下来,如果能多关注一下程序的执行情况,不就很多麻烦就免了么?

  幸好时间不是很紧。浪费的只是自己的时间。以后在这方面一定要细心点。不管什么程序都要把必要的日志记录下来,

使用 JDBC 向数据库插入数据需要以下几个步骤: 1. 加载数据库驱动程序 在使用 JDBC 操作数据库之前,需要先加载数据库驱动程序。比如,如果要连接 MySQL 数据库,则需要加载 MySQL 的 JDBC 驱动程序。可以通过以下代码加载 MySQL 驱动程序: ``` Class.forName("com.mysql.jdbc.Driver"); ``` 2. 建立数据库连接 使用 DriverManager 类的 getConnection() 方法建立数据库连接。getConnection() 方法需要传入三个参数:数据库连接 URL、用户名和密码。例如: ``` Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); ``` 3. 创建 SQL 语句 使用 SQL 语句向数据库插入数据。例如,以下代码创建一个 INSERT 语句: ``` String sql = "INSERT INTO user(name, age, email) VALUES('Tom', 18, 'tom@example.com')"; ``` 4. 执行 SQL 语句 使用 Statement 或 PreparedStatement 对象执行 SQL 语句。例如,以下代码使用 Statement 对象执行 INSERT 语句: ``` Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); ``` 5. 关闭数据库连接 在使用完数据库后,需要关闭数据库连接。例如: ``` stmt.close(); conn.close(); ``` 完整的 Java 代码示例: ``` import java.sql.*; public class JdbcDemo { public static void main(String[] args) { try { // 加载数据库驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 建立数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); // 创建 SQL 语句 String sql = "INSERT INTO user(name, age, email) VALUES('Tom', 18, 'tom@example.com')"; // 执行 SQL 语句 Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); // 关闭数据库连接 stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 注意:以上代码示例仅供参考,实际使用时需要根据具体情况修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值