【发布时间】:2018-04-17 09:08:15
【问题描述】:
我来自 UFT 背景。话虽如此,我对JAVA了解不多。 我有以下代码,我在其中连接到 sql server 并检索一些值并遍历它们,然后将它们打印出来以记录。有一个字符串数组 varialbe "String[] sqlArr" 保存从 sql server 检索到的所有值。如何将该“String [] sqlArr”变量返回到不同的类?在这种情况下到主类。
我不完全确定如何返回数组,但我尝试将返回类型更改为字符串,并在方法关闭花括号之前放置一个返回语句。我收到编译错误。
我想知道的是我怎么能, 1. 不是在方法中循环它,而是将数组返回到 Main,这样我就可以根据需要使用数组的每个值。 2. 在这种情况下,如果不是 void,返回类型应该是什么? 3. 或许有人可以推荐我或修改我的脚本,让我看起来更专业。
任何关于这方面的建议都将受到高度赞赏。
package com.mmia;
import java.sql.*;
public class Connect2SQLServer {
//Current Username
private String currentUser = System.getProperty("user.name");
public void connect2SQLServer() throws SQLException, ClassNotFoundException {
//Loading the required JDBC Driver class
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//Creating a connection to the database
Connection conn = DriverManager.getConnection("jdbc:sqlserver://XXXXXXXXXXX;databaseName=Data_Table_Name;integratedSecurity=true");
//Executing SQL query and fetching the result
Statement st = conn.createStatement();
//Sql query
String sqlStr = "Select * From PropertiesTable where Username =" + "'" + currentUser + "'";
//Execute the query
ResultSet rs = st.executeQuery(sqlStr);
while (rs.next()) {
String Username = rs.getString("Username");
String Environment = rs.getString("Environment");
String WebDealer = rs.getString("WebDealer");
String WebAgent = rs.getString("WebAgent");
String WebPassword = rs.getString("WebPassword");
String InternalUser = rs.getString("InternalUser");
String InternalPassword = rs.getString("InternalPassword");
String Browser = rs.getString("Browser");
//String[] sqlArr;
String[] sqlArr = {Username, Environment, WebDealer, WebAgent, WebPassword, InternalUser, InternalPassword, Browser};
for (int i = 0; i < sqlArr.length; i++) {
System.out.println(sqlArr[i]);
}
}
}
}
【问题讨论】:
-
"How to return that "String[] sqlArr" variable" 只需在方法的最后一行写:
return sqlArr;(您必须将方法签名从void更改为 @ 987654325@ 也一样)。 -
我的 main 方法如下所示: public class Main { public static void main(String[] args) throws ClassNotFoundException, SQLException { Connect2SQLServer con = new Connect2SQLServer(); con.connect2SQLServer(); } }
-
@alfasin,我尝试将返回类型更改为 String[] 并将 return sqlArr 写入方法的最后一行。我收到一些建议错误,例如将变量引入范围、创建局部变量、创建字段 sqlArr、重命名 regerence。
-
@Aomine,也许一个符合这种情况的二维数组的例子会更好。
-
您应该对代码进行另外两项改进:1) 明确命名您要选择的列,而不是只选择
*。这样,如果稍后将更多列添加到数据库中的表中,或者如果您需要在查询中加入其他表,您就不会失去性能。 2) 您的代码容易受到 SQL 注入的攻击。如果用户名是' or '1' = '1,它将选择该表中的所有行。改用准备好的语句:docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
标签: java arrays function arraylist methods