import java.util.*;
import java.sql.*;
import java.io.*;
class ExecuteQuery
{
public static void main(
String args[])
{
String query;
String server;
String user;
String password;
String baseDN;
String queryFile;
String url;
PrintWriter outFile;
if (args.length != 5)
{
System.out.println(
"Usage: java ExecuteQuery <server> <user> <password> <baseDN> <query file>");
System.out.println(
"Example: java ExecuteQuery 139.48.122.134 " +
"cn=tjones,ou=sales,o=acme mypassword ou=sales,o=acme query1.sql");
}
else
{
server = args[0];
user = args[1];
password = args[2];
baseDN = args[3];
queryFile = args[4];
try
{
System.out.println("loading driver class");
Class.forName("com.novell.sql.LDAPDriver");
System.out.println("loading driver class");
Driver driver = DriverManager.getDriver("jdbc:ldap");
url = "jdbc:ldap://" + server +
";user=" + user +
";password=" + password +
";baseDN=" + baseDN +
";useCleartext=true";
Connection conn = driver.connect(url, null);
Statement statement = conn.createStatement();
query = readQuery(queryFile);
ResultSet result = statement.executeQuery(query);
printResults(result);
conn.close();
}
catch (SQLException e)
{
System.out.println(e.toString());
}
catch (ClassNotFoundException e)
{
System.out.println(
"Could not find the Driver Class: com.novell.sql.LDAPDriver");
}
catch(java.lang.NullPointerException e)
{
System.out.println(e.toString());
e.printStackTrace();
}
}
}
static String readQuery(
String fileName)
{
BufferedReader in;
String line;
String query = "";
try
{
in = new BufferedReader(new FileReader(fileName));
while ( (line = in.readLine()) != null)
{
if (query.length() != 0)
query += " ";
query += line;
}
}
catch(FileNotFoundException e)
{
if (fileName.toLowerCase().startsWith("select"))
query = fileName;
}
catch (IOException e)
{
System.out.println(e.toString());
}
return query;
}
static void printResults(
ResultSet result)
{
ResultSetMetaData metaData;
int columnCount;
int i;
PrintWriter out;
try
{
out
= new PrintWriter(new BufferedWriter(new FileWriter("ExecuteQuery.txt")));
metaData = result.getMetaData();
columnCount = metaData.getColumnCount();
System.out.println(columnCount + " columns in this result");
for (i=1; i<=columnCount; i++)
{
out.print('"');
out.print(metaData.getColumnName(i));
out.print('"');
if (i != columnCount)
out.print('\t');
else
out.println();
}
out.println("----------------------------------");
while (result.next())
{
int j = 1;
System.out.println("result #" + j++);
for (i=1; i<=columnCount; i++)
{
System.out.println("\t#"+ i);
if (i == 334){
System.out.println("this is where the error ocurrs");
}
out.print('"');
out.print(result.getString(i));
out.print('"');
if (i < columnCount)
out.print('\t');
else
out.println();
}
}
out.flush();
out.close();
}
catch(Exception e)
{
System.out.println(e);
e.printStackTrace();
}
}
}