Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

JPVieira

Base de Dados Noob

Mensagens Recomendadas

JPVieira

Boas, decidi recentemente aprender a dar uns toques no C#, instalei o Visual Studio 2008 e ja fiz umas coisitas interessantes, e agora gostaria de utilizar uma base de dados no programa que estou a desenvolver, já procurei na internet mas não encontrei nenhum tutorial que me explicasse todo esse processo...

O que precisava era de saber como criar a base de dados, se em Access, em SQL(onde? preciso do SQL Server?), ou que servidor de BD devo utilizar?

É necessário a BD ficar aparte do programa, ou é possível a base de dados ficar "incluída" no .exe final?

Será que alguém me poderá dar uma orientação, e/ou um tutorial..

obrigado antes de mais, cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Boas.

Eu, pessoalmente, uso o SQLite.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

esta posta no meu site pessoal.

(se algum moderador achar que é publicidade descarada, é favor apagar esta posta)

(se outro moderador, não forçosamente o mesmo ;) quiser aproveitar essa posta para a wiki ou para a revista, está bem à vontade, desde que a licença aplicável seja cumprida)


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MytyMyky

@mjamado.. o teu artigo diz q SQLite é relacional, mas n é verdade. O SQLite não contém o conceito de relações. É possível ligar a informação implicitamente (controlado, por exemplo, pela aplicação), e usar triggers para criar os constrangimentos, e ainda podes usar as variantes de Join para obter dados "ligados". Mas ele não contém relações.

@JPVieira

Tens várias possibilidades de efectuar o que pretendes mas convém ter em conta os tipos de BDs. Essencialmente há dois tipos: ha bases de dados em ficheiro isolado, que podes "transportar" com a aplicação, e há bases que são suportados por um serviço da máquina, que pode ser acedido localmente ou remotamente. Do primeiro tipo, tens o Access e o SQLite, que contém os dados da base num único ficheiro, a que a aplicação pode aceder para ler. Do segundo tipo, tens SQL Server, MySQL , PostgreSQL, Oracle... etc. Estes podem ser vistos como "instalados" - há um serviço (o servidor) a correr na máquina, e esse serviço lê o ficheiro a pedido, efectua a operação, e devolve a resposta ao teu programa. O serviço pode ser acedido localmente ou remotamente. Para o que pretende, penso que o Access ou o SQLite são boas opções. Já usei o segundo e é muito interessante e funcional, apesar da falta de relações explicitas.

Escolhido a base de dados, tens que ligar a ele e executar o comando (geralmente escrito em SQL), lendo os dados devolvidos. Felizmente, o .NET ajuda muito nesse aspecto. Se utilizares SQL Server, as bibliotecas estão já incluídas (System.Data.SqlClient), ou mesmo para o Acces tb (penso que é usado as bibliotecas do OleDB... mas n tenho a certeza!). Para outras bases de dados, tens de utilizar bibliotecas que implementam a funcionalidade e interpretam os dados dessa base concreta. São geralmente bibliotecas gratuitas (como o System.Data.SQLite para SQLite ou o NpgSQL para o PostgreSQL). Qualquer uma delas ficas com uma serie de classes disponíveis para ligar à base e executar comandos. O processo é sempre o mesmo - Criar uma ligação (criar uma SQLConnection do tipo apropriado e que indique como aceder à base), Criar um SQLCommand com a instrução a executar nessa ligação, e finalmente executar o comando e ler os dados. Há classes como o DataReader e os DataSets que ajudam a ler os dados provenientes da base.

Já agora, o Visual Studio ajuda com muitas operações, permitindo que liques à base sem escrever qualquer código (quase). Pode n ser conveniente, ou o problema que queres resolver pode n exigir mais que isto. Mas basicamente, quer estejas a desenvolver para Asp.NET ou para Forms, tens uma serie de controlos que podes arrastar para  a página / form e usar os wizards para indicar que dados pretendes buscar. Depois ligas esse controlo com a forma de buscar a outros controlos que saibam apresentar a informação (os mais usuais são DataViews e DataGrids). Et voilá.

Para terminar, Se tiveres o VS e usares o SQL Server, (penso que isto é válido para o VS pro ou superior) consegues usar a interface do VS para tartar e gerir a base de dados.


Miguel Alho - Freelancer! Website e blog - http://www.miguelalho.com

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

@MytyMyky: o SQLite é relacional, desde a versão 3.6.19. Vê aqui. O port para .Net destes tipos é que ainda não está para essa versão e, por isso, não é relacional; mas eu também nunca disse que era.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MytyMyky

Interessante.. Não tenho usado o SQlite ultimamente (usei no inicio da versão 3 há um ano ou pouco mais) e recordo-me do detalhe. Efectivamente, só implementa o reforço da chave estrangeira se compilada correctamente:

In order to use foreign key constraints in SQLite, the library must be compiled with neither SQLITE_OMIT_FOREIGN_KEY  or SQLITE_OMIT_TRIGGER  defined. If SQLITE_OMIT_TRIGGER is defined but SQLITE_OMIT_FOREIGN_KEY is not, then SQLite behaves as it did prior to version 3.6.19 - foreign key definitions are parsed and may be queried using PRAGMA foreign_key_list, but foreign key constraints are not enforced. The PRAGMA foreign_keys command is a no-op in this configuration. If OMIT_FOREIGN_KEY is defined, then foreign key definitions cannot even be parsed (attempting to specify a foreign key definition is a syntax error).

Tenha ou não é uma excelente BD. Só é preciso é ter o detalhe em atenção para não se perder com os erros que podem surgir!


Miguel Alho - Freelancer! Website e blog - http://www.miguelalho.com

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Pessoalmente, até sou apologista de não garantir a integridade referencial directamente na BD. Prefiro garanti-la na aplicação, o que me dá a liberdade de ter um esquema de órfãos, por exemplo.

Mas é um excelente motor de base de dados - com ou sem funções relacionais.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JPVieira

Boas, obrigado pela ajuda a ambos, estive a tentar instalar o sqlite mas não consegui, provavelmente por burrice minha...

Entretanto, encontrei este tutorial, e criei a base de dados..

http://imasters.uol.com.br/artigo/12816/dotnet/trabalhar_dados_do_sqlserver_pelo_visualstudio/

Ela já está criada, já tem as tabelas, agora falta-me conectar o programa a ela, e apartir daí já devo conseguir fazer a inserção de dados, etc...

O problema é que também estou com dificuldades em fazer esta ligação á base de dados...

Como é que vocês fazem isso?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado
Eu, pessoalmente, uso o SQLite.
Para o que pretende, penso que o Access ou o SQLite são boas opções. Já usei o segundo e é muito interessante e funcional, apesar da falta de relações explicitas.

E tu vais usar o SQLServer...  😲 Sinceramente, cada vez percebo menos estes pedidos de ajuda...


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JPVieira

No caso de SQLite, então explica me como instalar aquilo....

Achei SQLServer boa ideia, pq parece-me que o ficheiro da base de dados não precisa de andar atrás do executável...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Leste a posta que linkei para o meu site pessoal?

Vais aqui, fazes o download e instalas. O resto é idêntico a qualquer sistema de BD que uses.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.