Tried on a Motorola ET1 Tablet and on a Motorola Droid, both with
Android 2.3.
I tried other samples, and this code for example works:
string dbPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),"items.db3");
bool exists = File.Exists(dbPath);
if (!exists) SqliteConnection.CreateFile(dbPath);
var connection = new SqliteConnection("Data Source=" + dbPath);
connection.Open();
if (!exists)
{
// This is the first time the app has run and/or that we need the DB.
// Copy a "template" DB from your assets, or programmatically create one.
var commands = new[]{
"CREATE TABLE [Items] (Key ntext, Value ntext);",
"INSERT INTO [Items] ([Key], [Value]) VALUES ('sample', 'text')",
"INSERT INTO [Items] ([Key], [Value]) VALUES ('sample2', 'text2')"
};
foreach (var command in commands)
{
using (var c = connection.CreateCommand())
{
c.CommandText = command;
c.ExecuteNonQuery();
}
}
}
// use `connection`...
// here, we'll just append the contents to a TextView
using (var contents = connection.CreateCommand())
{
contents.CommandText = "SELECT [Key], [Value] from [Items]";
var r = contents.ExecuteReader();
while (r.Read())
textView1.Text += string.Format("\n\tKey={0}; Value={1}",
r["Key"].ToString(), r["Value"].ToString());
r.NextResult();
}
connection.Close();
I can start from here now, but I'm still wondering what't wrong in the other
code (and why it didn't trap the error but just exit the procedure when .Read()
Thanks,
Mattia
Il 18/05/2012 14:30, ledz [via Mono for Android] ha scritto:
On what real device did you test?
On 18 May 2012 12:57, mdurli < [hidden email] >
wrote:
Hello,
I tried both with emulator and with real device.
Thanks,
Mattia
Il 18/05/2012 13:23, Wally McClure [via Mono for Android] ha
scritto:
Mattia,
I haven't tried this under 4.2, but when the book
was written, the data readers did not work in the
emulator under the 4.0x versions we tested with at the
time, but worked in every physical device that we
tested against. The joys of the emulator.
Wally
Date: Fri, 18 May 2012 13:12:04 +0200
From: [hidden
email]
To: [hidden
email]
CC: [hidden
email]
Subject: Re: [mono-android] SQLite error
Hello Wally,
thanks for the quick response.
On that specific example, there should
be another button on that form. IIRC, the
other button should insert some data into
the table. When I get down to my office,
I'll verify this.
Yes there is a button and it completes the DB
creation and sample data insertion with success, so
that part works.
The problem is with the second button that should
fetch the data with a datareader.
What I don't understand is why I can follow the
debug until the "while (sdr.Read())" line, and then
clicking F10 the debug jumps at the end of the
file... without rising any error, even if it's in
the try/catch block.
I tried both in emulator and in real device.
Debug should work, because there is a third button
that connects to a SQLServer DB, that fails
correctly during the connection in its try/catch
block.
Thanks,
Mattia
You should be able to create a DB and
store it in the assets directory. When
the application is first deployed and run,
you can copy the db file out. I haven't
done this, but you "should" be able to do
this. I'm a db guy at heart, so sql
commands are easy to put together for me,
plus I like to use them when I update
apps.
Accessing the db remotely is way more
complicated than we are used to with VS.
You can use adb to connect to the db, but
you have to have the device. I'm sure
that there are higher level tools that you
can use, but I am not aware of them.
Wally
> Date: Fri, 18 May 2012
03:35:23 -0700
> From: [hidden email]
> To: [hidden email]
> Subject:
[mono-android] SQLite error
>
> Hello,
>
> I'm having this problem with the
sample code of the wrox book "Pro Android
> programming with Mono for Android",
InternalNetworkData sample.
> First it creates a DB and fills it
with data, with success, then tries to
> read the data with a
SqliteDataReader.
> I tried to debug it and when it gets
to the line "while (sdr.Read())" the
> debug line jumps to the end of the
file, no errors, and non processing,
> application stil running, and I can
press the button to get the data again.
> What's wrong? with the code and with
my debug that can't get the error.
>
> string DatabaseName = "UserData.db3";
> string documents =
System.Environment.GetFolderPath(
>
System.Environment.SpecialFolder.Personal);
> string db = Path.Combine(documents,
DatabaseName);
> var conn = new SqliteConnection("Data
Source=" + db);
> var strSql = "select Name from
Customer where STATEID=@STATEID";
> var cmd = new SqliteCommand(strSql,
conn);
> cmd.CommandType = CommandType.Text;
> cmd.Parameters.Add(new
SqliteParameter("@STATEID", 2));
>
> tv.Text = "";
>
> try
> {
> conn.Open();
> SqliteDataReader sdr =
cmd.ExecuteReader();
> while (sdr.Read())
> {
> tv.Text =
Convert.ToString(sdr["Name"]);
> }
> }
> catch (System.Exception sysExc)
> {
> tv.Text = sysExc.Message;
> }
> finally
> {
> if (conn.State !=
ConnectionState.Closed)
> {
> conn.Close();
> }
> conn.Dispose();
>
> }
>
>
> By the way, is there a way with a
thirdy part software or even with vs to
> create a sqlite DB and deploy it with
the application? and maybe even to
> access the sqlite DBs in the
connected device? asking too much?
>
> Thanks!
> Mattia
>
> --
> View this message in context:
http://mono-for-android.1047100.n5.nabble.com/SQLite-error-tp5709898.html
> Sent from the Mono for Android
mailing list archive at Nabble.com.
>
_______________________________________________
> Monodroid mailing list
> [hidden email]
>
> UNSUBSCRIBE INFORMATION:
>
http://lists.ximian.com/mailman/listinfo/monodroid
_______________________________________________
Monodroid mailing list
[hidden
email]
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid
If you reply to this
email, your message will be added to the discussion
below:
http://mono-for-android.1047100.n5.nabble.com/SQLite-error-tp5709898p5709904.html
To unsubscribe from SQLite error, click here .
NAML
View this message in context: Re: SQLite
error
Sent from the Mono for
Android mailing list archive at Nabble.com.
_______________________________________________
Monodroid mailing list
[hidden email]
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid
--
Gonçalo Oliveira
_______________________________________________
Monodroid mailing list
[hidden email]
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid
If you reply to this email, your
message will be added to the discussion below:
http://mono-for-android.1047100.n5.nabble.com/SQLite-error-tp5709898p5709909.html
To unsubscribe from SQLite error, click
here .
NAML
--
View this message in context:
http://mono-for-android.1047100.n5.nabble.com/SQLite-error-tp5709898p5709911.html
Sent from the Mono for Android mailing list archive at Nabble.com._______________________________________________
Monodroid mailing list
[email protected]
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid