Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
JPVieira

Base de Dados Noob

Recommended Posts

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.