none
APP WP7 com BD qual escolher?! RRS feed

  • Pergunta

  • Boas Pessoal,

    Estou a desenvolver uma aplicação para WP7, mas como é a minha primeira app para windows phone (costumo programar para android) e estou com um pequeno problema.

    Para andorid uso o SqlLite e nunca tive problemas, e para windows o que me aconselham?!

    segui este tuturial para fazer a bd sql compact e ja a transformei atraves de sql metal em cs, o problema é que nao consigo depois na app configurar e tb mas nao consigo fazer os inserts por sql statment nem nada...

    alguem pode ajudar sff?

    Obrigado desde mais!!!

    • Movido AndreAlvesLima terça-feira, 30 de outubro de 2012 12:00 (De:Mobilidade)
    sexta-feira, 26 de outubro de 2012 05:14

Respostas

  • Declara isso no seu App.xaml.cs

            public const string sConn = @"isostore:/banco.sdf";
    
            public static Int32 DB_VERSION = 0;
    

    O DB_VERSION é para controlar a versão do seu banco de dados... Abaixo um exemplo verificar a existencia do banco e criar se necessário:

            private void VerificaBancoDados()
            {
                using (ClasseGeradaSQLmetal ctx = new ClasseGeradaSQLmetal(App.sConn))
                {
                    //Verificando existência do banco de dados
                    if (!ctx.DatabaseExists())
                    {
                        ctx.CreateDatabase();
    
                        // Set the new database version.
                        DatabaseSchemaUpdater dbUpdater = ctx.CreateDatabaseSchemaUpdater();
                        dbUpdater.DatabaseSchemaVersion = App.DB_VERSION;
                        dbUpdater.Execute();
                    }
                    else
                    {
                        DatabaseSchemaUpdater dbUpdater = ctx.CreateDatabaseSchemaUpdater();
                        Int32 DB_versao_atual = dbUpdater.DatabaseSchemaVersion;
    
                        if (DB_versao_atual < App.DB_VERSION)
                        {
                            switch (App.DB_VERSION)
                            {
                                case 1:
                        
                                case 2:
                                    break;
                            }
    
    
                            //Atualiza versão do banco de dados e aplica alterações
                            dbUpdater.DatabaseSchemaVersion = App.DB_VERSION;
    
                            try
                            {
                                dbUpdater.Execute();
                            }
                            catch (Exception)
                            {
    
                                MessageBox.Show("Houve um problema durante a atualização da versão do banco de dados. Reinicie a aplicação. Se o problema persistir, informe suporte@federalcase.com.br", "Erro", MessageBoxButton.OK);
                            }
                        }
                    }
                }
            }
    

    Depois você faz as operações que precisar usando o Linq, conforme o Rodo escreveu.

    Qualquer coisa chama.

    Abraço


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    • Marcado como Resposta tfbmonteiro sexta-feira, 23 de novembro de 2012 20:24
    quinta-feira, 1 de novembro de 2012 17:57

Todas as Respostas

  • Prezado(a),
    Estou migrando seu post para o fórum de Windows Phone.
    Por favor, das próximas vezes que tiver alguma dúvida relacionada a esse assunto, poste por lá.
    Obrigado.

    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    terça-feira, 30 de outubro de 2012 12:00
  • Amigo,

    depois que você roda o sqlMetal é gerada uma classe e nela tem um método para você criar sem banco de dados caso não exista.

    Você já mandou criar o banco antes de realizar os inserts?

    Não estou com visual studio aqui no momento, mas o comando é algo do tipo .CreateDatabase, caso você já tenha criado, poste aqui o erro que está acontecendo.


    Paulo Rogério

    terça-feira, 30 de outubro de 2012 16:23
  • Pode detalhar o problema melhor para nós, para entendermos o ponto em que está?

    Como o Paulo comentou, você irá criar suas classes, aí executar um CreateDatabase na primeira vez que rodar seu app, depois disso usará Linq2SQL para todas as operações nessa base. Pode ter sido ou no create ou na forma de interagir com a base o seu problema.


    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    quarta-feira, 31 de outubro de 2012 11:05
    Moderador
  • Declara isso no seu App.xaml.cs

            public const string sConn = @"isostore:/banco.sdf";
    
            public static Int32 DB_VERSION = 0;
    

    O DB_VERSION é para controlar a versão do seu banco de dados... Abaixo um exemplo verificar a existencia do banco e criar se necessário:

            private void VerificaBancoDados()
            {
                using (ClasseGeradaSQLmetal ctx = new ClasseGeradaSQLmetal(App.sConn))
                {
                    //Verificando existência do banco de dados
                    if (!ctx.DatabaseExists())
                    {
                        ctx.CreateDatabase();
    
                        // Set the new database version.
                        DatabaseSchemaUpdater dbUpdater = ctx.CreateDatabaseSchemaUpdater();
                        dbUpdater.DatabaseSchemaVersion = App.DB_VERSION;
                        dbUpdater.Execute();
                    }
                    else
                    {
                        DatabaseSchemaUpdater dbUpdater = ctx.CreateDatabaseSchemaUpdater();
                        Int32 DB_versao_atual = dbUpdater.DatabaseSchemaVersion;
    
                        if (DB_versao_atual < App.DB_VERSION)
                        {
                            switch (App.DB_VERSION)
                            {
                                case 1:
                        
                                case 2:
                                    break;
                            }
    
    
                            //Atualiza versão do banco de dados e aplica alterações
                            dbUpdater.DatabaseSchemaVersion = App.DB_VERSION;
    
                            try
                            {
                                dbUpdater.Execute();
                            }
                            catch (Exception)
                            {
    
                                MessageBox.Show("Houve um problema durante a atualização da versão do banco de dados. Reinicie a aplicação. Se o problema persistir, informe suporte@federalcase.com.br", "Erro", MessageBoxButton.OK);
                            }
                        }
                    }
                }
            }
    

    Depois você faz as operações que precisar usando o Linq, conforme o Rodo escreveu.

    Qualquer coisa chama.

    Abraço


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    • Marcado como Resposta tfbmonteiro sexta-feira, 23 de novembro de 2012 20:24
    quinta-feira, 1 de novembro de 2012 17:57