windows-nt/Source/XPSP1/NT/inetsrv/query/sdk/vjquery/query.java
2020-09-26 16:20:57 +08:00

143 lines
3.8 KiB
Java

//Query.java
//+-------------------------------------------------------------------------
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright 1998-1999, Microsoft Corporation. All Rights Reserved.
//
// PROGRAM: VJQuery
//
// PURPOSE: Illustrates using Visual J++ and ADO to execute
// SQL queries with Indexing Service.
//
// PLATFORM: Windows 2000
//
//--------------------------------------------------------------------------
import java.io.*;
// NOTE: The com.ms.wfc imports will become just wfc imports for distribution.
import com.ms.wfc.*;
import com.ms.wfc.core.*;
import com.ms.wfc.data.*;
import com.ms.com.*;
//+-------------------------------------------------------------------------
//
// Class: Query
//
// Synopsis: Encapsulates setting/executing/displaying a query.
//
//--------------------------------------------------------------------------
public class Query
{
Query()
{
this.m_SqlText = "";
}
//+-------------------------------------------------------------------------
//
// Method: Query::SetRawSql
//
// Synopsis: Stores a complete SQL query statement (SELECT, FROM, WHERE).
//
// Arguments: [RawSql] -- SQL Query.
//
//--------------------------------------------------------------------------
void SetRawSql( String RawSql )
{
this.m_SqlText = RawSql;
}
//+-------------------------------------------------------------------------
//
// Method: Query::SetSqlWhere
//
// Synopsis: Stores an SQL WHERE clause. Remainder of query is fixed.
//
// Arguments: [Where] -- SQL WHERE clause, sans WHERE keyword.
//
//--------------------------------------------------------------------------
void SetSqlWhere( String Where )
{
m_SqlText = "SELECT Filename, Size, Write, Path FROM SCOPE('DEEP TRAVERSAL OF \"\\\"') WHERE ";
m_SqlText = m_SqlText + Where;
}
//+-------------------------------------------------------------------------
//
// Method: Query::Execute
//
// Synopsis: Execute query.
//
// Notes: May throw ADO exceptions.
//
//--------------------------------------------------------------------------
void Execute()
{
m_RS = new Recordset();
m_RS.open( m_SqlText,
"provider=MSIDXS",
AdoEnums.CursorType.STATIC,
AdoEnums.LockType.BATCHOPTIMISTIC,
AdoEnums.CommandType.TEXT );
}
//+-------------------------------------------------------------------------
//
// Method: Query::Display
//
// Synopsis: Display query results
//
// Arguments: [PS] -- Results are written to here.
//
// Notes: May throw ADO exceptions.
//
//--------------------------------------------------------------------------
void Display( PrintStream PS )
{
try
{
int cFields = m_RS.getFields().getCount();
while ( !m_RS.getEOF() )
{
for ( int j = 0; j < cFields; j++ )
PS.print( m_RS.getFields().getItem(j).getValue() + "\t" );
PS.print( "\n" );
m_RS.moveNext();
}
}
catch( com.ms.wfc.data.AdoException e )
{
System.out.println( "Caught " + e.getErrorNumber() );
try
{
int i = System.in.read();
}
catch( java.lang.Exception e2 )
{
}
}
}
// Members
private String m_SqlText;
private Recordset m_RS;
}