关于JDBC操作数据库 相关问题 麻烦大佬看一下
问题描述:
package TestJDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class JDBCDemo {
private final static String URL="jdbc:oracle:thin:@localhost:1521:xe";
private final static String USERNAME="system";
private final static String PWD="wd1999";
public static void query() { // 查询
Connection connection = null;
Statement stmt = null;
ResultSet rs = null ;
try {
// a.导入驱动,加载具体的驱动类
Class.forName("oracle.jdbc.OracleDriver");// 加载具体的驱动类
// b.与数据库建立连接
connection = DriverManager.getConnection(URL, USERNAME, PWD);
// c.发送sql,执行(增删改、【查】)
stmt = connection.createStatement();
Scanner input= new Scanner(System.in);
System.out.println("请输入用户名:");
String name = input.nextLine() ;
System.out.println("请输入密码:");
String pwd = input.nextLine() ;
String sql = "select count(*) from login1 where uname='"+name+"' and upwd ='"+pwd+"' " ;
// 执行SQL(增删改executeUpdate(),查询executeQuery())
rs = stmt.executeQuery(sql); // 返回值表示 增删改 几条数据
// d.处理结果
int count = -1;
if(rs.next()) {
count=rs.getInt(1);
}
if(count>0) {
System.out.println("登陆成功!");
}else {
System.out.println("登陆失败!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
finally {
try {
if(rs!=null) rs.close();
if(stmt!=null) stmt.close(); // 对象.方法
if(connection!=null)connection.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
query() ;
}
}
就是处理结果这里 我的数据库中一张login1的表中有一个 uname :zs upwd:abc 显示结果一直不正确 经过我的调试发现rs.getInt(1)的值一直为0 按理讲返回的值为应该为1 求求大佬帮忙 小白想了一上午也没改对
答
sql语句中count(*)返回的是,查询得到的总条数,按你的条件应该得到的条数是1,想要得到结果集的话,你应该改成select * ....,查询结果集,然后通过对结果集的遍历得到对应的数据
答
sql放到数据库执行以下看结果
答
您好,把sql输出出来,放入数据库执行以下,看一下结果,有可能是你输入的值与存储的值不一样,中间有空格什么的
答
1.ResultSet是结果集,只在查询的时候返回结果,增删改只会返回int类型值
答
谢谢大家帮忙 count(*)返回的结果是1 好像明白了 数据库知识学的不太扎实 我去尝试改错误
答
count(*) 返回结果是1 * 返回结果是zs abc 即是我数据库查询到的内容 但是rs.getInt()始终为0