
java中用JDBC链接mysql查询为什么总是报错?
importjava.sql.*;publicclassTest{publicstaticvoidmain(String[]args){Stringurl="jdbc:m...
import java.sql.*;
public class Test {
public static void main(String[] args){
String url = "jdbc:mysql://127.0.0.1:3306/FACTORY";
try{
//注册驱动
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("注册驱动成功!");
//连接数据库
Connection conn = DriverManager.getConnection(url, "root", "123456");
System.out.println("连接成功!");
//建立statement
Statement statement = conn.createStatement();
System.out.println("建立statement成功!");
//建立一个返回值
ResultSet resultSet = statement.executeQuery("select * from SPJ where SNO = 'S1'");
System.out.println("建立resultSet成功!");
//输出表头
ResultSetMetaData rsMetaData = resultSet.getMetaData();
for(int i = 0 ; i < rsMetaData.getColumnCount() ; i++){
System.out.printf("%-12s\t", rsMetaData.getColumnName(i ));
// System.out.printf("%-12s\t", resultSet.getString(i));
}
System.out.println();
System.out.println("输出表头成功");
//输出表体
while(resultSet.next()){
for(int i = 0 ; i <= rsMetaData.getColumnCount() ; i++){
System.out.printf("%-12s\t", resultSet.getObject(i));
}
System.out.println();
}
System.out.println("输出表体成功");
conn.close();
}catch(Exception e){
e.printStackTrace();
}
//关闭链接
}
}
错误提示:
注册驱动成功!
连接成功!
建立statement成功!
建立resultSet成功!
java.sql.SQLException: Column index out of range.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:398)
at com.mysql.jdbc.ResultSetMetaData.getColumnName(ResultSetMetaData.java:249)
at Test.main(Test.java:28) 展开
public class Test {
public static void main(String[] args){
String url = "jdbc:mysql://127.0.0.1:3306/FACTORY";
try{
//注册驱动
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("注册驱动成功!");
//连接数据库
Connection conn = DriverManager.getConnection(url, "root", "123456");
System.out.println("连接成功!");
//建立statement
Statement statement = conn.createStatement();
System.out.println("建立statement成功!");
//建立一个返回值
ResultSet resultSet = statement.executeQuery("select * from SPJ where SNO = 'S1'");
System.out.println("建立resultSet成功!");
//输出表头
ResultSetMetaData rsMetaData = resultSet.getMetaData();
for(int i = 0 ; i < rsMetaData.getColumnCount() ; i++){
System.out.printf("%-12s\t", rsMetaData.getColumnName(i ));
// System.out.printf("%-12s\t", resultSet.getString(i));
}
System.out.println();
System.out.println("输出表头成功");
//输出表体
while(resultSet.next()){
for(int i = 0 ; i <= rsMetaData.getColumnCount() ; i++){
System.out.printf("%-12s\t", resultSet.getObject(i));
}
System.out.println();
}
System.out.println("输出表体成功");
conn.close();
}catch(Exception e){
e.printStackTrace();
}
//关闭链接
}
}
错误提示:
注册驱动成功!
连接成功!
建立statement成功!
建立resultSet成功!
java.sql.SQLException: Column index out of range.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:398)
at com.mysql.jdbc.ResultSetMetaData.getColumnName(ResultSetMetaData.java:249)
at Test.main(Test.java:28) 展开
3个回答
展开全部
for(int i = 0 ; i < rsMetaData.getColumnCount() ; i++){
System.out.printf("%-12s\t", rsMetaData.getColumnName(i ));
// System.out.printf("%-12s\t", resultSet.getString(i));
}
改成
while(rsMetaData.next()){
System.out.printf("%-12s\t", rsMetaData.getString(1)); //打印数据库表中第一条记录的第一个属性
System.out.printf("%-12s\t", rsMetaData.getString(2)); ////打印数据库表中第一条记录的第二个属性
}
System.out.printf("%-12s\t", rsMetaData.getColumnName(i ));
// System.out.printf("%-12s\t", resultSet.getString(i));
}
改成
while(rsMetaData.next()){
System.out.printf("%-12s\t", rsMetaData.getString(1)); //打印数据库表中第一条记录的第一个属性
System.out.printf("%-12s\t", rsMetaData.getString(2)); ////打印数据库表中第一条记录的第二个属性
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
rsMetaData.getColumnName
这个索引是从1开始,而不是0
这个索引是从1开始,而不是0
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
古老的JDBC 真心看不懂了 貌似是输出表头那里出错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询