关于 java 的 jdbc 的问题 求解答

2014-08-16 21:46:46 +08:00
 wyk1184
package demo1;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DbConn {
// 创建静态全局变量
static Connection conn;

static Statement st;

public static void main(String[] args) {
insert(); //插入添加记录
query();

}

/* 插入数据记录,并输出插入的数据记录数*/
public static void insert() {

conn = getConnection1(); // 首先要获取连接,即连接到数据库

try {
String sql = "INSERT INTO emp(user_id,user_name,user_salary)"
+ " VALUES ('4', 'big','7777')"; // 插入数据的sql语句

st = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象//Statement st=?

int count = st.executeUpdate(sql); // 执行插入操作的sql语句,并返回插入数据的个数

System.out.println("向staff表中插入 " + count + " 条数据"); //输出插入操作的处理结果

conn.close(); //关闭数据库连接

} catch (SQLException e) {
System.out.println("插入数据失败" + e.getMessage());
}
}

/* 更新符合要求的记录,并返回更新的记录数目*/


/* 获取数据库连接的函数*/
public static Connection getConnection1() {
Connection con = null; //创建用于连接数据库的Connection对象
try {
Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动

con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myuser","root", "1");// 创建数据连接
} catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage());
}
return con; //返回所建立的数据库连接
}
public static void query() {

conn = getConnection1(); //同样先要获取连接,即连接到数据库
try {
String sql = "select * from emp"; // 查询数据的sql语句
st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量

ResultSet rs = st.executeQuery(sql); //执行sql查询语句,返回查询数据的结果集
System.out.println("最后的查询结果为:");
while (rs.next()) { // 判断是否还有下一个数据

// 根据字段名获取相应的值
String name = rs.getString("user_name");
int name_id = rs.getInt("name_id");
String user_salary = rs.getString("user_salary");

//输出查到的记录的各个字段的值
System.out.println(name + " " + name_id + " " +user_salary+ " ");
}
conn.close(); //关闭数据库连接z

} catch (SQLException e) {
System.out.println("查询数据失败");
}
}
}



代码很简单 一个 insert() 一个query()
插入一条数据之后 然后再查询一下,发现怎么都不显示结果 ,有没有大神帮忙看看什么问题。。
好想是rs这个对象一直没有获取到值。。。。
3472 次点击
所在节点    程序员
8 条回复
Aegwynn
2014-08-16 22:17:32 +08:00
我能吐槽一下这代码麽。。。
conn.commit();
close()建议放在finally中。
wyk1184
2014-08-16 23:56:57 +08:00
@Aegwynn  加一个提交吗 我这怎么还是查不出来数据呢
SoloCompany
2014-08-16 23:58:02 +08:00
建议用 glist
现在的 V2 的 Markdown 支持还没公开,这样贴代码看起来真心累
如果你是说插入的数据查询不到,然后在 mysql 或其它 console 中能看到的话
那么很可能就是你使用 Connection 的方法不对了

如果你从头到尾都是用同一个 Connection,那么应该没问题

如果你先申请了一个 conn1,然后一不小心手贱又多申请了一个 conn2
然后在其中一个 conn1 中执行了 insert,即使已经 commit 了,而 conn2 也是处于事务状态,那么很可能它是没法看到 conn1 中 insert 的结果的,请自行验证
xiluo
2014-08-17 02:23:08 +08:00
xiluo
2014-08-17 02:23:40 +08:00
xiluo
2014-08-17 02:25:08 +08:00
仔细看看27行和73行
incompatible
2014-08-17 04:22:48 +08:00
@xiluo 天啊 眼睛太尖了
xiaomao
2014-08-17 15:28:05 +08:00
搜索一下 单例模式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/128291

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX