您好,匿名用户
随意问技术百科期待您的加入

java连接数据库进行查询优化跑不通谁能帮我调下通

0 投票

我已经把你昨天给我的那个代码调通了但是另一般还有点问题这个是调好的

import java.sql.*; 

public class jdbcyouhuo1 { 

	public String[] getUserName(String connString, String SQLString) throws SQLException { 		
	
	    Connection connection = DriverManager.getConnection(connString,"root", "root");

	    try {
	    	
	        Statement statement = connection.createStatement();

	        ResultSet rs = statement.executeQuery(SQLString);

	        int rowcount = 0;

	        int i = 0; 

	        if( rs.last()) {

	             rowcount = rs.getRow();	             

	             rs.beforeFirst();
	        }	        

	        String[] retArray = new String[rowcount];

	        while (rs.next()) {

	            retArray[i++] = rs.getString("user_name");
	            
	        }

	        statement.close();

	        return retArray; 

	    } catch (SQLException e ) {
	    	
	    	
	        System.err.print("SQLException: ");

	    } finally {
	     
	    }

	    return null;
	}        	
} 

这个是还有问题的一半

import java.sql.*;

public class jdbcyouhua2 {

	public static void main(String[] agrs){ 

		String connString = "jdbc:mysql://localhost/ace?useUnicode=true&characterEncoding=utf-8";

		String SQLString = "SELECT user_name FROM users";

		jdbcyouhuo1 jb1 = new jdbcyouhuo1();
		
		try{
			
			String[] rs = jb1.getUserName(connString, SQLString);
			
		
			//while(rs.next()){ 
 
				System.out.println(rs.getString("user_name"));
	} 

		} catch(Exception e) { 

			e.printStackTrace(); 

		} finally {
		   
		}
	}
}

是输出那里还有问题
Cannot invoke getString(String) on the array type String[]

用户头像 提问 2013年 9月13日 @ Shen 上等兵 (318 威望)
分享到:

1个回答

0 投票

你的Connection变量应该在类之中,在使用ResultSet之前不可以把Statement和Connnection不应该关,你的ResultSet不应被返回而是直接把结果拿到 []string 内再返回

import java.util.Arrays;
import java.lang.*;
import java.sql.*;

public class DatabaseConnectorTest {
        private Connection connection = null;
        private Statement statement = null;

        public void connect(String connString) throws SQLException {
                try {
                        Class.forName("org.sqlite.JDBC");
                        connection = DriverManager.getConnection(connString,"root", "root");
                } catch (SQLException e) {
                        System.err.print("connect SQLException: ");
                        System.err.println(e.getMessage());
                } catch (ClassNotFoundException e) {
                        System.err.print("ClassNotFoundException: ");
                        System.err.println(e.getMessage());
                }
        }
        public String[] getUserName(String connString, String SQLString) {
                ResultSet rs = null;
                try {
                        if(null == connection)
                                connect(connString);
                        if(null == statement)
                                statement = connection.createStatement();
                        rs = statement.executeQuery(SQLString);
                        int rowcount = 0;
                        int i = 1;
                        while(rs.next()) {
                                rowcount = i++;
                        }
                        String[] retArray = new String[rowcount];
                        i=0;
                        rs = statement.executeQuery(SQLString);
                        while (rs.next()) {
                                retArray[i++] = rs.getString("user_name");
                        }
                        return retArray;
                } catch (SQLException e ) {
                        System.err.print("getUserName SQLException: ");
                        System.err.println(e.getMessage());
                } finally {
                        if (statement != null) {
                                try { statement.close(); }
                                catch(SQLException e) {
                                        System.err.print("getUserName Final SQLException: ");
                                        System.err.println(e.getMessage());
                                }
                        }
                }
                return null;
        }
        public static void main(String[] agrs){
                String connString = "jdbc:sqlite:/tmp/test.db"; <<<< 用你自己的
                String SQLString = "SELECT user_name FROM users";
                DatabaseConnectorTest db = new DatabaseConnectorTest();
                String[] user_name = db.getUserName(connString, SQLString);
                System.out.println(Arrays.toString(user_name));
        }
}
用户头像 回复 2013年 9月13日 @ Master Yi 上等兵 (217 威望)
提一个问题:

相关问题

+1 投票
1 回复 44 阅读
0 投票
1 回复 65 阅读
用户头像 提问 2012年 12月1日 @ Miss Fortune 上等兵 (418 威望)
0 投票
1 回复 27 阅读
用户头像 提问 2012年 12月1日 @ Poseidon 上等兵 (188 威望)
+1 投票
1 回复 27 阅读
0 投票
1 回复 35 阅读
用户头像 提问 2012年 12月1日 @ 卫宫士郎 上等兵 (173 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...