# JAVA & MySQL : INSERT INTO DB !



## freepal (5. Mrz 2007)

hallo DB-Freaks,

hier ist ein Java Code zum lesen aus einer Datenbank :

```
import java.io.*;
import java.sql.*;

public class shopDB
{
  public static void main( String[] argv )
  {
    String sDbDrv=null, sDbUrl=null, sTable=null, sUsr="", sPwd="";
    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 {
      BufferedReader in = new BufferedReader(
	                    new InputStreamReader( System.in ) );
    
	sDbDrv = "com.mysql.jdbc.Driver";
	
	sDbUrl = "jdbc:mysql://localhost:3306/mydb";
	
	sTable ="shop";
	
	sUsr = "root";
	
	sPwd ="das passwort";
    }
    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 {
        
        Class.forName( sDbDrv );
        cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
        st = cn.createStatement();
        rs = st.executeQuery( "select * from " + sTable );
      
        ResultSetMetaData rsmd = rs.getMetaData();
        int i, n = rsmd.getColumnCount();
       
        
        for( i=1; i<=n; i++ )  
          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++ )
            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 ) {}
      }
    }
  }

 
  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;
  }
}
```


so sieht dann die Ausgabe :


| barcode             | name          | price         | quant        | cat                | discount        | saled       | eink_p       |
+-------------------+---------------+-------------+------------+-----------------+---------------+------------+-------------+
| 3333333333333 | Siemens       | 30            | 300           | Monitor          | 12                | 3             | 23            |
| 4444444444444 | Sony            | 40            | 400           | CPU              | 2                  | 4             | 24            |
| 5555555555555 | Asus             | 125          | 27            | Graphic Card  | 11                | 5             | 25            |
+-------------------+---------------+------------+-------------+-----------------+---------------+------------+-------------+


Die Frage : wie sieht  eine mögliche INSERT INTO shop-DB-Methode bzw. delete in java  aus??

also Elemente zur DB Einfügen bzw. Löschen !!!


----------



## DP (5. Mrz 2007)

```
st = cn.createStatement(); 
st.execute("insert into tabelle (feld1, feld2) values (wert1, wert2)");
st.execute("delete from tabelle where feld1 = wert1");
```

wobei beim insert ggf. ein preparedstatement zu wählen ist


----------



## SlaterB (5. Mrz 2007)

generischer Tipp für die Zukunft (falls du mal einen neuen Toaster bedienen musst und dafür kein Forum findest): 
soetwas steht in einer sogenannten Anleitung/ Tutorial/ Lehrbuch

(sorry für Scherze auf deine Kosten  )

---------
dann noch zwei bessere Tipps: 
nicht so viel in der main, das Lesen aus der DB in eine Unteroperation!

und auch wichtig für später mal: Verarbeiten des ResultSets und Ausgabe möglichst trennen,
die Daten in einem String[] zwischenspeichern und dann in einer anderen Operation ausgeben


----------

