Hey Leute,
ich bin dabei eine App zu programmieren, die Codes abscannt und diese dann in eine Datenbank schreibt. Das Scannen funktioniert. Das schreiben von Werten in eine Datenbank auch, zumindest wenn man es als normales Java Projekt ausführt.
Bei einer mysql connection braucht man ja den Treiber dazu, den man normal als externes Jar file Importiert. Das hat normal auch gut geklappt, wenn ich das jar file aber meine App hinzufüge, brüllt Lint, dass die Klassen Feherhaft sind. Desweiteren denke ich, dass ich Probleme mit der übergabe der Werte habe zwischen und innerhalb der zwei Klassen, obwohl für mich alles logisch aussieht. Jedes mal wenn ich den Send butten drücke, beendet sich die App.
Möchte da jemand einen Blick riskieren?
ich bin dabei eine App zu programmieren, die Codes abscannt und diese dann in eine Datenbank schreibt. Das Scannen funktioniert. Das schreiben von Werten in eine Datenbank auch, zumindest wenn man es als normales Java Projekt ausführt.
Bei einer mysql connection braucht man ja den Treiber dazu, den man normal als externes Jar file Importiert. Das hat normal auch gut geklappt, wenn ich das jar file aber meine App hinzufüge, brüllt Lint, dass die Klassen Feherhaft sind. Desweiteren denke ich, dass ich Probleme mit der übergabe der Werte habe zwischen und innerhalb der zwei Klassen, obwohl für mich alles logisch aussieht. Jedes mal wenn ich den Send butten drücke, beendet sich die App.
Möchte da jemand einen Blick riskieren?
Java:
package com.example.appfinal;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
public class MainActivity extends Activity implements OnClickListener {
//UI instance variables
private Button scanBtn;
private Button sendBtn;
private EditText preis_eingabe;
public String getScan_result() {
return scan_result;
}
public String getPrice() {
return price;
}
public String scan_result="0";
public String price="0";
private TextView formatTxt, contentTxt, textView1, textView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//instantiate UI items
this.scanBtn = (Button)findViewById(R.id.scan_button);
this.formatTxt = (TextView)findViewById(R.id.scan_format);
this.contentTxt = (TextView)findViewById(R.id.scan_content);
this.sendBtn = (Button)findViewById(R.id.send_button);
this.preis_eingabe= (EditText)findViewById(R.id.editText1);
this.textView2=(TextView)findViewById(R.id.textView2);
this.textView1= (TextView)findViewById(R.id.textView1);
//listen for clicks
scanBtn.setOnClickListener(this);
sendBtn.setOnClickListener(this);
}
public void onClick(View v) {
this.price=preis_eingabe.getText().toString();
//check for scan button
if (v.getId() == R.id.scan_button) {
//instantiate ZXing integration class
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
//start scanning
scanIntegrator.initiateScan();
} else if (v.getId() == R.id.send_button) {
work.setScan_rs(scan_result);
work.setPrice_rs(price);
new work().execute();
}
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//retrieve result of scanning - instantiate ZXing object
IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
//check we have a valid result
if (scanningResult != null) {
//get content from Intent Result
String scanContent = scanningResult.getContents();
this.scan_result=scanContent;
//get format name of data scanned
String scanFormat = scanningResult.getFormatName();
//output to UI
formatTxt.setText("FORMAT: "+scanFormat);
contentTxt.setText("CONTENT: "+scanContent);
//zur Kontrolle der werteübergabe, die Ergebnisse in ein Textfeld schreiben-funktioniert allerdings nicht
textView1.setText(this.scan_result);
textView2.setText(this.price);
} else{
//invalid scan data or scan canceled
Toast toast = Toast.makeText(getApplicationContext(),
"No scan data received!", Toast.LENGTH_SHORT);
toast.show();
}
}
}
Java:
package com.example.appfinal;
import android.media.AsyncPlayer;
import android.os.AsyncTask;
import java.sql.BatchUpdateException;
import java.sql.*;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.BatchUpdateException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/**
* Created by Alex on 10.12.2015.
*/
public class work extends AsyncTask <Void, Void, Void>{
public String url= "jdbc:mysql://sql4.freesqldatabase.com:3306/sql499392";
public String user= "******";
public String pw="******";
public static String price_rs;
Connection con=null;
public static String scan_rs;
public static void setPrice_rs(String price_rss) {
price_rs = price_rss;
}
public static void setScan_rs(String scan_rss) {
scan_rs = scan_rss;
}
@Override
protected Void doInBackground(Void... args0){
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// Bl�d: Treiber konnte nicht geladen werden.
System.out.println("Treiber konnte nicht geladen werden");
}
try {
con = DriverManager.getConnection(url, user, pw);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
PreparedStatement stmt = (PreparedStatement) con.prepareStatement("INSERT INTO barcode VALUES (?, ?)");
stmt.setString(1, scan_rs);
stmt.setString(2, price_rs);
stmt.executeUpdate();
System.out.println("hat alles geklappt");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("fehler2");}
try {
con.close();
} catch(SQLException e) {
// TODO Auto-generated catch block
System.out.println("connection konnte nicht geschlossen werden");
}
return null;
}
@Override
protected void onPostExecute(Void result){
super.onPostExecute(result);
e.printStackTrace();
}
}
Zuletzt bearbeitet von einem Moderator: