Datenbankanbindung per WebService

  • Themenstarter Themenstarter Tobias Kern
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

Tobias Kern

Gast
Hi,

habe folgendes Problem es geht hier um ein WebService der auf die Datenbank zugreifen und jegliche Select Anweisungen ausführen soll.
Die Ausführung wird bzw. soll mit einem Client gestartet werden.

Wäre für jeden Hilfe sehr dankbar danke im Voraus.

Dies habe ich soweit keine Ahnung ob das auch stimmt wäre super wenn jemand mal drüber schauen könnte...

Habe soweit meinen WebService so gestaltet:
Code:
import java.io.*;
import java.sql.*;

import oracle.jdbc.driver.OracleDriver;
import oracle.jdbc.pool.OracleDataSource;

//Hier können alle Befehle ausgeführt werden  

public class Select 
{
	 public static final String Ausgabe( String sSql )
	 {
		String sDbDrv=null,
			   sDbUrl=null, 
	    	   sTable=null, 
	    	   sUsr="", 
	    	   sPwd="";	    	

	    
	    if( null != sDbDrv && 0 < sDbDrv.length() &&
	        null != sDbUrl && 0 < sDbUrl.length() &&
	        null != sTable && 0 < sTable.length() ) {
	      Connection conn = null;
	      Statement  stmt = null;
	      ResultSet  rs = null;
	      try {
	        // Select fitting database driver and connect:
	        Class.forName( sDbDrv );
	        conn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
	        stmt = conn.createStatement();
	        rs = stmt.executeQuery( sSql );
	        
	        
	        // Get meta data:
	        ResultSetMetaData rsmd = rs.getMetaData();
	        int i, n = rsmd.getColumnCount();
	        // Print table content:
	        for( i=0; i<n; i++ )
	          System.out.print( "+----------------------" );
	        System.out.println( "+" );
	        for( i=1; i<=n; i++ )    // Attention: first column with 1 instead of 0
	          System.out.print( "| " + extendStringTo21( rsmd.getColumnName( i ) ) );
	        System.out.println( "|" );
	        for( i=0; i<n; i++ )
	          System.out.print( "+----------------------" );
	        System.out.println( "+" );
	        while( rs.next() ) {
	          for( i=1; i<=n; i++ )  // Attention: first column with 1 instead of 0
	            System.out.print( "| " + extendStringTo21( rs.getString( i ) ) );
	          System.out.println( "|" );
	        }
	        for( i=0; i<n; i++ )
	          System.out.print( "+----------------------" );
	        System.out.println( "+" );
	      } catch( Exception ex ) {
	        System.out.println( ex );
	      } finally {
	        try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
	        try { if( null != stmt ) stmt.close(); } catch( Exception ex ) {}
	        try { if( null != conn ) conn.close(); } catch( Exception ex ) {}
	      }
	    }
	    return sSql ;
	  }

	  // Extend String to length of 21 characters
	  private static final String extendStringTo21( String s )
	  {
	    if( null == s ) s = "";
	    final String sFillStrWithWantLen = "                     ";
	    final int iWantLen = sFillStrWithWantLen.length();
	    final int iActLen  = s.length();
	    if( iActLen < iWantLen )
	      return (s + sFillStrWithWantLen).substring( 0, iWantLen );
	    if( iActLen > 2 * iWantLen )
	      return s.substring( 0, 2 * iWantLen );
	    return s;
	  }
}

Client dazu eine Jsp Datei:

Code:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<%@ taglib uri="/WEB-INF/taglibs-io.tld"  prefix="io" %>

<%@ page import = "java.sql.*" isThreadSafe="false" %>
<%@ page import = "oracle.jdbc.driver.OracleDriver" isThreadSafe="false" %>
<%@ page import = "oracle.jdbc.pool.OracleDataSource" isThreadSafe="false" %>

<%
	final String urlLocalhost =
    "http://localhost:8083/MeinWebServiceSelect/services/MeinWebServiceSelect";
  	String url   = request.getParameter( "url" );
	
	String DbDrv = request.getParameter( "DbDrv" );
	String DbUrl = request.getParameter( "DbUrl" );
	String Usr   = request.getParameter( "Usr" );
	String Pwd   = request.getParameter( "Pwd" );
	String Table = request.getParameter( "Table" );
	String Sql   = request.getParameter( "Sql" );


	url   = ( null != url ) ? url.trim() : urlLocalhost;
	DbDrv = ( null != DbDrv ) ? DbDrv.trim() : "oracle.jdbc.driver.OracleDriver";
	DbUrl = ( null != DbUrl ) ? DbUrl.trim() : "jdbc:oracle:thin:@localhost:1521:xe";
	Usr   = ( null != Usr ) ? Usr.trim() : " hr ";
	Pwd   = ( null != Pwd ) ? Pwd.trim() : " fenerium ";
	Table = ( null != Table ) ? Table.trim() : "Employees";
	Sql   = ( null != Sql ) ? Sql.trim() : "";
%>

<html>
<head> <title>Mein Web Service Client Select Database</title> </head>
<body>
<h2>Mein Web Service Client Select Database</h2>




<form method="post"><pre>
Endpoint-URL       : <input type="text"     name="url" value='<%= url %>' size=80>
D.-Treiber         : <input type="text"     name="DbDrv" value='<%= DbDrv %>' size=80>
D.-Url             : <input type="text"     name="DbUrl" value='<%= DbUrl %>' size=80>
User               : <input type="text"     name="Usr" value='<%= Usr %>' size=80>
Password           : <input type="password" name="Pwd" value='<%= Pwd %>' size=80>
Tabelle            : <input type="text"     name="Table" value='<%= Table %>' size=80>
Sql-Kommando       : <input type="text"     name="Sql" value='<%= Sql %>' size=80>
                     <input type="submit"   name="submit" value="Ausgabe">
</pre></form>

<h3><hr>Ausgabe( <%= Sql %>) --&
<% out.flush(); %>
<io:soap url="<%= url %>" SOAPAction="">
  <io:body>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
      <SOAP-ENV:Body>
        <m:Ausgabe xmlns:m="http://meinpackage">
            <in0><%= Sql %></in0>
        </m:Ausgabe>
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
  </io:body>
</io:soap>
<hr></h3>

</body>
</html>
 
Die Frage ist nun folgende es wird im WebService die Eingabe für den String ausgegeben nicht die table ...

d.h wenn ich als Sql - KOmmando : "select * from employees" eingebe kommt dies auch als Ausgabe raus...


Kann nun jemand behilflich sein, danke ...?
 
Wo hast Du denn die taglibs-io.tld und dazugehörige taglibs-io.jar her? Ich finde die nirgenwo!

Gruß
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben