Thank you for both of your replies. I have tried implementing both of
your suggestions but neither has worked.
I've found another way to do it though and I've had some success
although displaying it as a listview seems to be really difficult.
This is what I've written...
package com.targetshooterapp;
public class DBAdapter extends ListActivity
{
// These variables to be retrieved from the Intent Bundle
/** Unique ID assigned to competitors once entering an event */
int entryID;
/** Unique identifier for shots */
int shotID;
/** Name of the event */
String eventName="Tester";
/** Event Date */
String date="Date";
/** Type of event */
String eventType="Service Pistol";
/** Number of rounds */
int numRounds=1;
/** Number of shots per round */
int shotsPerRound=4;
/** Name of user */
String shooter="me";
/** Distance from the target */
String distance="100 yards";
/** Total score at the end of the event*/
int totalScore=10;
/** x coordinate of user input on screen */
float xCoord = (float) 345.675;
/** y coordinate of user input on screen */
float yCoord = (float) 345.675;
/** Event table - String name */
private final String EVENT_TABLE = "tbl_event";
/** Shot table - String name */
private final String SHOT_TABLE = "tbl_event";
SQLiteDatabase db;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Create Array List to store result
ArrayList<String> result = new ArrayList<String>();
try
{
db = openOrCreateDatabase("shootnext.db",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
// Set DB version, Locale and locking properties of the
database
db.setVersion(1);
db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
/** SQL query to create the event table */
final String CREATE_TABLE_EVENT = "CREATE TABLE IF NOT
EXISTS
tbl_event("
+ "entryID INTEGER PRIMARY KEY , "
+ "eventName TEXT,"
+ "date TEXT,"
+ "eventType TEXT,"
+ "numRounds INTEGER,"
+ "shotsPerRound, INTEGER"
+ "shooter TEXT,"
+ "distance TEXT,"
+ "totalScore INTEGER);";
/** SQL query to create the shot table */
final String CREATE_TABLE_SHOT = "CREATE TABLE IF NOT
EXISTS tbl_shot("
+ "shotID INTEGER PRIMARY KEY , "
+ "entryID INTEGER,"
+ "xCoord FLOAT,"
+ "yCoord FLOAT,"
+ "points INTEGER,"
+ "shooter TEXT);";
// Create tables in the database
db.execSQL(CREATE_TABLE_EVENT);
db.execSQL(CREATE_TABLE_SHOT);
// SQL query to enter event details into database
String INSERT_INTO_EVENT = "INSERT INTO tbl_event
VALUES"
+"(5,'"
+ eventName
+"','"
+ date
+"','"
+ eventType
+"','"
+ numRounds
+"','"
+ shotsPerRound
+"','"
+ shooter
+"','"
+ distance
+"','"
+ totalScore +"');";
String INSERT_INTO_SHOT = "INSERT INTO tbl_shot VALUES"
+"(17,'"
+ 34 +"','"
+ xCoord +"','"
+ yCoord +"','"
+ totalScore +"','"
+ shooter +"');";
//db.execSQL(INSERT_INTO_EVENT);
//db.execSQL(INSERT_INTO_SHOT);
Cursor cursor = db.rawQuery("SELECT eventName,shooter"
+
" FROM " + EVENT_TABLE
+ " WHERE totalScore > 10 LIMIT 10",
null);
if(cursor != null)
{
if(cursor.moveToFirst())
{
do
{
String eName =
cursor.getString(cursor.getColumnIndex("eventName"));
String sName =
cursor.getString(cursor.getColumnIndex("shooter"));
int tScore =
cursor.getInt(cursor.getColumnIndex("totalScore"));
//result.add("" + eName + "" +
"Name: "+ sName + ",
Score: " + tScore);
result.add("" + eName +
",Shooter: " + sName);
}
while(cursor.moveToNext());
}
}
this.setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, result));
}
catch(SQLiteException se)
{
Log.e(getClass().getSimpleName(), "Can't get in!");
}
finally
{
if(db != null)
{
db.execSQL("DELETE * FROM " + EVENT_TABLE);
db.execSQL("DELETE * FROM " + SHOT_TABLE);
db.close();
}
}
}
}
I have also posted the log output
I/ActivityManager( 67): Starting activity: Intent
{ cmp=com.targetshooterapp/.
History }
D/AndroidRuntime( 685): Shutting down VM
W/dalvikvm( 685): threadid=3: thread exiting with uncaught exception
(group=0x4
001aa28)
E/AndroidRuntime( 685): Uncaught handler: thread main exiting due to
uncaught e
xception
E/AndroidRuntime( 685): java.lang.RuntimeException: Unable to start
activity Co
mponentInfo{com.targetshooterapp/com.targetshooterapp.History}:
android.database
.sqlite.SQLiteException: no such column: shooter: , while compiling:
SELECT even
tName,shooter FROM tbl_event WHERE totalScore > 10 LIMIT 10
E/AndroidRuntime( 685): at
android.app.ActivityThread.performLaunchActiv
ity(ActivityThread.java:2401)
E/AndroidRuntime( 685): at
android.app.ActivityThread.handleLaunchActivi
ty(ActivityThread.java:2417)
E/AndroidRuntime( 685): at android.app.ActivityThread.access
$2100(Activi
tyThread.java:116)
E/AndroidRuntime( 685): at android.app.ActivityThread
$H.handleMessage(Ac
tivityThread.java:1794)
E/AndroidRuntime( 685): at
android.os.Handler.dispatchMessage(Handler.ja
va:99)
E/AndroidRuntime( 685): at android.os.Looper.loop(Looper.java:
123)
E/AndroidRuntime( 685): at
android.app.ActivityThread.main(ActivityThrea
d.java:4203)
E/AndroidRuntime( 685): at
java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime( 685): at
java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime( 685): at com.android.internal.os.ZygoteInit
$MethodAndA
rgsCaller.run(ZygoteInit.java:791)
E/AndroidRuntime( 685): at
com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:549)
E/AndroidRuntime( 685): at
dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 685): Caused by:
android.database.sqlite.SQLiteException: no
such column: shooter: , while compiling: SELECT eventName,shooter FROM
tbl_event
WHERE totalScore > 10 LIMIT 10
E/AndroidRuntime( 685): at
android.database.sqlite.SQLiteProgram.native_
compile(Native Method)
E/AndroidRuntime( 685): at
android.database.sqlite.SQLiteProgram.compile
(SQLiteProgram.java:110)
E/AndroidRuntime( 685): at
android.database.sqlite.SQLiteProgram.<init>(
SQLiteProgram.java:59)
E/AndroidRuntime( 685): at
android.database.sqlite.SQLiteQuery.<init>(SQ
LiteQuery.java:49)
E/AndroidRuntime( 685): at
android.database.sqlite.SQLiteDirectCursorDri
ver.query(SQLiteDirectCursorDriver.java:49)
E/AndroidRuntime( 685): at
android.database.sqlite.SQLiteDatabase.rawQue
ryWithFactory(SQLiteDatabase.java:1118)
E/AndroidRuntime( 685): at
android.database.sqlite.SQLiteDatabase.rawQue
ry(SQLiteDatabase.java:1092)
E/AndroidRuntime( 685): at
com.targetshooterapp.History.onCreate(History
.java:121)
E/AndroidRuntime( 685): at
android.app.Instrumentation.callActivityOnCre
ate(Instrumentation.java:1123)
E/AndroidRuntime( 685): at
android.app.ActivityThread.performLaunchActiv
It says there is no such column: shooter: in the databsae, but there
is. I've added stuff to it and its fine.
Any ideas?
On Sep 1, 6:45 pm, Kostya Vasilyev <[email protected]> wrote:
> The "from" and "to" arrays need to have equal size, and contain values
> (column names and view ids) that are used for mapping data to UI elements.
>
> Your code seems to try and map a number of data column items into one
> text view.
>
> The fix is to add more elements to the item layout, and specify themin
> the "to" array, so each column in the "from" array is mapped to a view.
>
> To display two (or more) tables, you use something called a "table
> join". It's a standard SQL construct, Google for it.
>
> Finally, use logcat (in Eclipse or "adb logcat" on the host computer) to
> see more detailed information whenever your application crashes.
>
> Including the Java stack trace from logcat output with your questions is
> also useful, as it helps others understand what goes on in your application.
>
> -- Kostya
>
> 01.09.2010 20:26, kingh32 пишет:
>
> > // Set the list adapter
> > String[]from = {DBHelper.COL_ENTRYID,
> > DBHelper.COL_EVENTNAME,
> > DBHelper.COL_DATE, DBHelper.COL_EVENTTYPE,
> > DBHelper.COL_NUMROUNDS,
> > DBHelper.COL_PLAYSSPERROUND,
> > DBHelper.COL_PLAYERS,
> > DBHelper.COL_DISTANCE,
> > DBHelper.COL_TOTALSCORE};
>
> > int[]to = {R.id.the name of my textview};
>
> > // Put retrieved data into a list view
> > SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
> > android.R.layout.simple_list_item_1, cursor, from, to);
>
> --
> Kostya Vasilyev -- WiFi Manager + pretty widget
> --http://kmansoft.wordpress.com
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en