Yes of course this is the full code: 
    
    Snippet
    void PullDataButton_Click(object sender, EventArgs e)
        {
            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();
            }
        }
 
        void CreateDataBaseButton_Click(object sender, EventArgs e)
        {
            string DatabaseName = "UserData.db3";
            string documents = System.Environment.GetFolderPath(
                System.Environment.SpecialFolder.Personal);
            string db = Path.Combine(documents, DatabaseName);  
            bool exists = File.Exists(db);  
            if (!exists)  
            {
                SqliteConnection.CreateFile(db);
            }
            var conn = new SqliteConnection("Data Source=" + db);   
            var commands = new[] {
                  "DROP TABLE IF EXISTS TWITTERDATA",
                  "DROP TRIGGER IF EXISTS TWITTERDATA_INSERT",
                  "CREATE TABLE IF NOT EXISTS STATE (STATEID INT PRIMARY KEY, STATENAME VARCHAR(50))",
                  "CREATE TABLE IF NOT EXISTS CUSTOMER(CUSTOMERID BIGINT PRIMARY KEY, " +
                    "NAME VARCHAR(100), CONTACTNAME VARCHAR(100), DATEJOINED DATETIME, " +
                    "PHONE VARCHAR(25), ADDRESS VARCHAR(100), CITY VARCHAR(50), " +
                    "STATEID INT, ZIPCODE VARCHAR(25), DATEENTERED DATETIME, " +
                    "DATEUPDATED DATETIME, FOREIGN KEY(STATEID) REFERENCES STATE(STATEID))",
                  "CREATE TRIGGER IF NOT EXISTS CUSTOMER_INSERT INSERT ON CUSTOMER " +
                  "BEGIN UPDATE CUSTOMER SET DATEENTERED=DATE('now') " +
                     "WHERE CUSTOMERID=NEW.CUSTOMERID; END;",
                  "CREATE INDEX IF NOT EXISTS IDX_CUSTOMERNAME ON CUSTOMER (NAME)",
                  "CREATE INDEX IF NOT EXISTS IDX_STATEID ON CUSTOMER (STATEID)",
                  "CREATE INDEX IF NOT EXISTS IDX_DATEENTERED ON CUSTOMER (DATEENTERED)",
                  "INSERT INTO STATE (STATENAME) VALUES ('TENNESSEE');",
                  "INSERT INTO STATE (STATENAME) VALUES ('GEORGIA');"};
            try
            {
                foreach (var cmd in commands)
                    using (var sqlitecmd = conn.CreateCommand())
                    {
                        sqlitecmd.CommandText = cmd;
                        sqlitecmd.CommandType = CommandType.Text;
                        conn.Open();
                        sqlitecmd.ExecuteNonQuery();
                        conn.Close();
                    }
                SqliteCommand sqlc = new SqliteCommand();
                sqlc.Connection = conn;
                conn.Open();
                string strSql = "INSERT INTO CUSTOMER (NAME, " +
                    "CONTACTNAME, STATEID) VALUES " +
                    "(@NAME, @CONTACTNAME, @STATEID)";
                sqlc.CommandText = strSql;
                sqlc.CommandType = CommandType.Text;
                sqlc.Parameters.Add(new SqliteParameter("@NAME", "The Coca-Cola Company"));
                sqlc.Parameters.Add(new SqliteParameter("@CONTACTNAME", "John Johns"));
                sqlc.Parameters.Add(new SqliteParameter("@STATEID", 1));
                sqlc.ExecuteNonQuery();
                if (conn.State != ConnectionState.Closed)
                {
                    conn.Close();
                }
                conn.Dispose();
                tv.Text = "Commands completed.";
            }
            catch (System.Exception sysExc)
            {
                tv.Text = "Exception: " + sysExc.Message;
            }
        } 
    
    
    Thanks, 
    Mattia 
    
    Il 18/05/2012 13:30, ledz [via Mono for Android] ha scritto:
     can you tell me table creation line so I can get the
      types descriptions? 
      
      On 18 May 2012 12:12, Mattia Durli < [hidden email] >
        wrote: 
        
           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 
          
        
      
      
      
      
      
      -- 
      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-tp5709898p5709905.html
 
      
      
        To unsubscribe from SQLite error, click
          here . 
        NAML  
    
  



--
View this message in context: 
http://mono-for-android.1047100.n5.nabble.com/SQLite-error-tp5709898p5709907.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

Reply via email to