Archiv für Kategorie ‘Programieren’

PreparedStatement komplett

In Java ist alles einfach und direkt, wenn man weiss wie ;p

Darum zu meiner Erinnerung einmal komplett wie man ein Datenbank Update mit einem PreparedStatement macht

Hier aus einem JUnit Test, bei einer Oracle Datenbank (DataBaseQuerySchema)

@Test
public void TestUpdateSiebenZwerge() {

double result = 0.0;

String sql = "INSERT INTO "
+ DataBaseQuery.SCHEMA
+ "Zwerge (NR, NAME, TALENT, COMMENTS, ORDERID) "
+ "VALUES (6, 'Nase', 'Buddeln', 'nett', (select max(ORDERID)+1 from Zwerge))";

try {

// Inject DataSource
String ZwergEnv = System.getProperty("ZWERG_ENV");

// Create initial context
System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.naming.java.javaURLContextFactory");
System.setProperty(Context.URL_PKG_PREFIXES, "org.apache.naming");
InitialContext ctx = new InitialContext();

ctx.createSubcontext("java:");
ctx.createSubcontext("java:comp");
ctx.createSubcontext("java:comp/env");

// Construct DataSource
OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
ds.setURL("jdbc:oracle:thin:@nitrium_stollen.de:1521:ZWERGE");
ds.setUser("aufseher");
ds.setPassword("Peitschenknall666");

ctx.bind("java:comp/env/ZwergDBResource_" + ZwergEnv, ds);

//get single connection
Connection conn = ds.getConnection();

//create prepared statement
PreparedStatement pstmt = conn.prepareStatement(sql);

//execute prepared statement in foreign class (simply pstmt.executeUpdate())
DataBaseQuery dbQuery = new DataBaseQuery();
result = Convert.toDouble(dbQuery.execSQLPreparedUpdate(pstmt));

if (dbQuery != null) {
dbQuery.closeResourcesWithoutException();
}

System.out.println("Update Result of Zwergen Update is " + Convert.toString(result));

} catch (Exception e) {
e.printStackTrace();
}

// added Zwerg
assertEquals("Test Result after Update", 1.0, result, 1.0);

}

git clone über ssh mit nicht standard port

als bestes Protokoll zum Arbeiten auf fremden unixiden Systemen hat sich ssh und als Soure code Verwaltung hat sich GIT als Mittel der Wahl gezeigt. Wenn man aber bei der einen oder anderen Seite vom Standard abweicht ist die Syntax nicht immer intuitiv zu finden, daher hier wieder eine Notitz dazu.

Git clone von einem fremden Rechner mit ssh Protokol auf Port 3000


git clone ssh://linuxuser@192.168.0.1:3000/~/myproject/.git

gefunden auf Miguels Webseite

Git config ändern

wiedermal was zum erinnern….

wer sich unter Ubuntu beim Konfigurieren von GIT vertippt bekommt diese Fehlermeldung


error: could not lock config file .git/config

wenn man versucht mit

git config --remove-section dummer.name

die falsch benannte Sektion zu entfernen, das kann einen verwirren, da es den Ordner und damit die config unter Ubuntu 11.04 gar nicht gibt. Es gibt aber die ~/.gitconfig. die man ganz einfach mit vi ändern kann

Jetty

Mal wieder was zur Erinnerung…

Jetty ein Embedded WebServer für Java, der auch (der übliche Weg)direkt aus einer Java Klasse heraus aufgerufen werden kann. Sprich man bekommt für ein paar MB eine Webanwendung samt Webserver 🙂

Hier die notwendigen Schritte, vorausgesetzt man hat Eclipse installiert

1. Ein KOMPlETTES Jetty Repository herunter laden. Das erkennt man an der vorhandenen oder fehlenden start.jar. Z.B von hier
oder jetty-distribution-8.0.4.v20111024

2. In Eclipse ein neues Java Project in Eclipse erstellen. Alles auf Standard lassen. Finish klicken

3.Auf src mit rechts klicken und „New -> Class“ auswählen.Als Package Name z.b „com.trytry“ und als Klassen Name z.B“HelloHandler“. Die muss man sich nur merken und bei behalten, wenn man danach gefragt wird

4. Man klickt auf den Project Namen mit rechts und dann „New -> Folder“, diesen nennt man lib. In diesen kopiert man alle jar Files aus dem lib Verzeichnis des herunter geladenen Jetty zip Files

5. Diese Jar Files macht man dem Project bekannt. In dem man mit rechts auf den Projekt Namen klickt und dann „Properties -> Java Build Path -> Add JARs -> im LIB Verzeichnis alle markieren -> ok -> ok“

6. Muss man einfach die HelloHandler.java in Eclipse durch doppelklicken öffnen und für ein einfaches HalloWorld Programm diesen Code eingeben


package com.trytry;

import java.io.IOException;
import java.net.InetAddress;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;

public class HelloHandler extends AbstractHandler{

public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("

Jetty Server

");
}
public static void main(String[] args) {
int port = 8090;
String IPAddress = "";

try {
Server server = new Server(port);
server.setHandler(new HelloHandler());

InetAddress thisIP = InetAddress.getLocalHost();
IPAddress = thisIP.getHostAddress();
System.out.println("\n Starting Jetty on http://"+ IPAddress + ":" + port + "\n");

server.start();
server.join();

} catch (Exception e) {
e.printStackTrace();
}

}

}

copy+paste sollte funktionieren.

7. Klick auf Projekt in der Menu Leiste dann bei ausgewähltem „Build Automatically“ Clean auswählen und ok beim gewählten Project

8. Jetzt kann man es schon laufen lassen. Klick auf den grünen Run Button und man sollte in der Cosole sehen wie der Jetty zu erreichen ist..
„Starting Jetty on http://192.168.0.100:8090“

9. Jetzt braucht man nur noch einen Browser öffnen und man sollte „Jetty Server“ bei der oben genannten URL sehen

Noch keine richtige Anwendung aber für ein paar MB einen vollständigen Webserver inklusive Anwendung zu bekommen macht zB. im Embedded Bereich vieles möglich

Wie das ganz dann von einer Maschine auf die nächste kopiert wird, ist eine andere Geschichte…man braucht ja noch Projekte 🙂

ANT

dies ist nur mal eine Notitz, weil mich der Einstieg in ANT echt Nerven gekostet hat und die Iteration wohl öfters gebraucht wird
Ant-contribute downloaden und in  $(basedir)/lib/ant-contrib-version.jar ablegen, dann in Build File integrieren

<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="${basedir}/lib/ant-contrib-version.jar"/>
</taskdef>

Liste von z.B xsd Files erstellen und dabei für jedes File eine Funktion aufrufen


<target name="xsd_iteration">
<foreach target="generate_package" param="file">
<path>
<fileset dir="${basedir}/schemaII">
<include name="**/*.xsd" />
</fileset>
</path>
</foreach>
</target>


in der Aufgerufenen Funktion z.B den File Namen benutzen um JAXB laufen zu lassen


<target name="generate_package" description="Generate Packages with Java files">
<basename property="xsdname" file="${file}" suffix=".xsd"/>
<property name="packname" value="com.more-machines.packages.${xsdname}" />

<echo message="Generate package ${packname}" />
<echo message="from ${file}" />

<xjc schema="${file}" destdir="${basedir}/generated" package="${packname}" removeOldOutput="true" />

</target>

Nach oben