hi,
bin soeben ein Beispielcode durchgegangen und habe da festgestellt das alle SELECT Anweisungen funktionieren.
Jedoch wollte ich danach ein Update bzw. Delete ausführen doch es tritt die Fehlermeldung auf :
Meine Frage warum kann ich mit diesem Code keine Update bzw. Delete Anweisung ausführen muss dazu etwas umgeändert werden?
Danke
bin soeben ein Beispielcode durchgegangen und habe da festgestellt das alle SELECT Anweisungen funktionieren.
Jedoch wollte ich danach ein Update bzw. Delete ausführen doch es tritt die Fehlermeldung auf :
Code:
java.sql.SQLException: ORA-00900: Ungültige SQL-Anweisung
Meine Frage warum kann ich mit diesem Code keine Update bzw. Delete Anweisung ausführen muss dazu etwas umgeändert werden?
Danke
Code:
public class DbTableUpdate
{
public static void main( String[] argv )
{
String sDbDrv=null, sDbUrl=null, sTable=null, sUsr="", sPwd=""; String sSql = "";
if( 3 <= argv.length ) {
sDbDrv = argv[0];
sDbUrl = argv[1];
sTable = argv[2];
//if( 4 <= argv.length )
sUsr = argv[3];
//if( 5 <= argv.length )
sPwd = argv[4];
} else {
try {
BufferedReader in = new BufferedReader(
new InputStreamReader( System.in ) );
System.out.println( "Name des Datenbanktreibers eingeben (z.B. oracle.jdbc.driver.OracleDriver):" );
sDbDrv = in.readLine();
System.out.println( "Url der Datenbank eingeben (z.B. jdbc:oracle:thin:@localhost:1521:xe):" );
sDbUrl = in.readLine();
System.out.println( "Name der Tabelle eingeben (z.B. MeineTestTabelle):" );
sTable = in.readLine();
System.out.println( "Benutzername (z.B. root):" );
sUsr = in.readLine();
System.out.println( "Passwort (z.B. mysqlpwd):" );
sPwd = in.readLine();
if( null != sTable && 0 < sTable.length() &&
(null == sSql || 0 == sSql.length()) )
sSql = "UPDATE" +sTable+ "SET " ;
System.out.println( "SQL Befehl:" );
sSql = in.readLine();
} catch( IOException ex ) {
System.out.println( ex );
}
}
if( null != sDbDrv && 0 < sDbDrv.length() &&
null != sDbUrl && 0 < sDbUrl.length() &&
null != sTable && 0 < sTable.length() ) {
Connection cn = null;
Statement st = null;
ResultSet rs = null;
try {
// Select fitting database driver and connect:
Class.forName( sDbDrv );
cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
st = cn.createStatement();
rs = st.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( "| " + extendStringTo14( 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( "| " + extendStringTo14( 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 != st ) st.close(); } catch( Exception ex ) {}
try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
}
}
}
// Extend String to length of 14 characters
private static final String extendStringTo14( 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;
}
}
Zuletzt bearbeitet: