我有以下代码适用于我。
import java.sql.*;
class MyClass {
public static void main (String[] Owner ) throws Exception
{
Class.forName ("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@//host:port/SID", "username", "password");
try {
Statement stmt = conn.createStatement();
try {
for (int i=0; i < owner.length; i++){
String consumerName = "TestConsumer";
ResultSet msgs = Stmt.executeQuery("select msg_id from Table where owner = '" + owner[i] + "' and consumer_name = '" + consumerName + "' and msg_state = 'READY'" );
while (msgs.next())
System.out.println (msgs.getString(1));
try { msgs.close(); } catch (Exception closeMsgsExcp) {}
}
}
finally {
try { stmt.close(); } catch (Exception closeStmtExcp) {}
}
}
finally {
try { conn.close(); } catch (Exception closeConnExcp) {}
}
}
}
但是当我尝试将此代码更改为以下代码时,我得到一个错误-错误:在类MyClass中找不到主要方法,请将该主要方法定义为:public static void main(String [] args)。 我需要接收owner和ConsumerName作为程序的参数/输入。
import java.sql.*;
class MyClass {
public static void main (String[] Owner, String[] consumerName ) throws Exception
{
Class.forName ("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@//host:port/SID", "username", "password");
try {
Statement stmt = conn.createStatement();
try {
for (int i=0; i < owner.length; i++){
//String consumerName = "TestConsumer";
ResultSet msgs = Stmt.executeQuery("select msg_id from Table where owner = '" + owner[i] + "' and consumer_name = '" + consumerName[i] + "' and msg_state = 'READY'" );
while (msgs.next())
System.out.println (msgs.getString(1));
try { msgs.close(); } catch (Exception closeMsgsExcp) {}
}
}
finally {
try { stmt.close(); } catch (Exception closeStmtExcp) {}
}
}
finally {
try { conn.close(); } catch (Exception closeConnExcp) {}
}
}
}
,这怎么办?
答案 0 :(得分:2)
使用String-Array传递参数。main-Method仅具有args参数。
您可以将所有所有者传递到数组中,然后将限制器字符串(不能是所有者或使用者)放入其中,然后将所有使用者放入数组中。在主体中,您遍历args数组并为其创建两个数组。
答案 1 :(得分:1)
您不能更改public static void main的语法。