Introdução ao SQL Server CE

Primeiros passos no SQL Server CE.

Microsoft® SQL Server™ 2000 Windows® CE Edition (SQL Server CE) é uma versão especifica para a plataforma Windows CE-based, um banco de dados robusto, veloz e confiável para SmartDevices, ele é um subset do SQL Server 2000, algumas características não estão presentes na versão Server CE, para quem já usa o SQL Server 2000 o impacto será irrelevante. O .NET Framework fornece um Provider(Provedor) para acesso ao SQL Server CE através do namespace System.Data.SqlServerCe.

Você poderá usar todo o poder do DDL(Data Definition Language) para criar um Banco de Dados, alterar tabelas e fazer a definição de valores padrões, como mostra a Tabela 1, poderá usar a DML(Data Manipulation Language) para inserir(insert), deletar(delete) e atualizar(update) os dados, você terá todo o poder de um Banco de Dados Relacional, poderá usar criptografia de 128 Bits para senhas e arquivo. O SQL Server CE suporta Banco de Dados de até 2GB(GigaBytes) e Blobs de até 1GB(GigaByte).

Tipos de Dados

Descrição

bigint

Integer (conjunto de Inteiros) dados de -2^63 (- 9,223,372,036,854,775,808) por 2^63-1 (9,223,372,036,854,775,807). Tamanho do Armazenamento é de 8 bytes.

integer

Integer (Inteiros) dados de -2^31 (-2,147,483,648) por 2^31 - 1 (2,147,483,647).

smallint

Integer(Inteiros) dados de –32,768 to 32,767. Tamanho do Armazenamento é de 2 bytes.

tinyint

Integer(Inteiros) dados de 0 to 255. Tamanho do armazenamento é de 1 byte.

bit

Integer(Inteiro) armazena 0 ou 1.

numeric (p, s)

Precisão-Fixada e Escala-Numerica dados de -10^38 +1 por 10^38 –1. p especifica a precisão que pode ser entre de 1 e 38. s especifica a escala que pode ser entre 0 e p.

money

Valor Monetário dados de -2^63 (- 922,337,203,685,477.5808) por 2^63 - 1 (922,337,203,685,477.5807. Tamanho de armazenamento de 8 bytes.

float

Ponto Flutuante, dados de -1.79E + 308 por 1.79E + 308

Tamanho de armazenamento de 8 bytes.

real

Precisão Flutuante, dados de -3.40E + 38 por 3.40E + 38.

datetime

Data e Hora, contem tanto a Hora como a Data

national character(n)

Sinônimo:
nchar(n)

Tamanho-Fixo Unicode dados com tamanho máximo de 255 caracteres.
Tamanho Padrão = 1
Tamanho do Armazenamento, entre bytes, é duas vezes o tamanho dos caracteres armazenados.

national character varying(n)

Sinônimo:
nvarchar(n)

Tamanho-Váriavel Unicode dados com tamanho de 1 a 255 caracteres.
Tamanho Padrão = 1
Tamanho do Armazenamento, entre bytes, é duas vezes o tamanho dos caracteres armazenados.

ntext

Variable-length Unicode data with a maximum length of (2^30 - 2) / 2 (536,870,911) characters. Storage size, in bytes, is two times the number of characters entered.

binary(n)

Tamanho-Fixo binário dados com um tamanho máximo de 510 bytes. Tamanho Padrão = 1

varbinary(n)

Tamanho-Váriavel binário dados com um tamanho máximo de 510 bytes. Tamanho Padrão = 1

image

Variable-length binary data with a maximum length of 2^30 – 1 (1,073,741,823) bytes.

uniqueidentifier

Um Identificador Global Unico(GUID). Tamanho do armazenamento de 16 bytes.

IDENTITY [(s, i)]

Ela é uma propriedade da Coluna de Dados, não exatamente um tipo de dados.

Somente Colunas com tipo de dados inteiros(integer) podem usar a identidade(Identity). Uma tabela pode ter somente uma coluna de identidade. Pode ser identificado um valor inicia e um incrementador pode ser especificado e a coluna não poderá ser atualizada.

s (inicial) = Valor inicial

i (incrementador) = Valor incrementado a cada novo registro.

Tabela 1. Valores padrões

Iniciando o Desenvolvimento

Agora que conhecemos como funciona o SQL Server CE, quais são os tipos de dados, vamos criar e fazer acesso a um Banco de Dados SQL Server CE a partir do Visual Studio, criaremos tabelas, índices tudo baseado em SQL(Strutured Query Language), usarei nesse artigo a Linguagem VB.net, com alterações de sintaxe você poderá usar o C# sem mais complicações.

Acompanhe a Tabela 2 na qual contêm as definições das propriedades dos componentes buttons.

Name

Text

btnCriarBd

Criar Banco de Dados

btnConectarBd

Conectar BD

btnCriarTabelas

Criar Tabelas

btnInserirDados

Inserir Dados

btnSelecionarDados

Selecionar Dados

Tabela 2. Definições das Propriedades dos Componentes

É necessário referenciar o Namespace System.Data.SqlServerCe, com isso teremos o acesso total ao SQL Server CE, para referenciar é simples, no Solution Explorer clique com o botão direto do mouse encima do projeto do Pocket PC, clique no item “Add Reference...”, após isso abrirá uma janela para referenciar o namespace System.Data.SqlServerCe no Projeto.

Acessando SQL Server CE

Vamos ao código, faça os imports necessários e atribua o código da Listagem 1, aos eventos dos buttons.

'Importar os metódos da classe SQLServerCE Imports System.Data.SqlServerCe 'Também é necessario fazer o Import das Funções de I/O Imports System.IO Public Class Form1 Inherits System.Windows.Forms.Form Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) MyBase.Dispose(disposing) End Sub 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid Friend WithEvents btnCriarBd As System.Windows.Forms.Button Friend WithEvents btnConectarBd As System.Windows.Forms.Button Friend WithEvents btnCriarTabelas As System.Windows.Forms.Button Friend WithEvents btnInserirDados As System.Windows.Forms.Button Friend WithEvents btnSelecionar As System.Windows.Forms.Button Private Sub InitializeComponent() Me.MainMenu1 = New System.Windows.Forms.MainMenu Me.btnCriarBd = New System.Windows.Forms.Button Me.btnConectarBd = New System.Windows.Forms.Button Me.btnCriarTabelas = New System.Windows.Forms.Button Me.btnInserirDados = New System.Windows.Forms.Button Me.btnSelecionar = New System.Windows.Forms.Button Me.DataGrid1 = New System.Windows.Forms.DataGrid ' 'btnCriarBd ' Me.btnCriarBd.Location = New System.Drawing.Point(16, 16) Me.btnCriarBd.Size = New System.Drawing.Size(112, 20) Me.btnCriarBd.Text = "Criar Banco Dados" ' 'btnConectarBd ' Me.btnConectarBd.Location = New System.Drawing.Point(136, 16) Me.btnConectarBd.Size = New System.Drawing.Size(96, 20) Me.btnConectarBd.Text = "Conectar BD" ' 'btnCriarTabelas ' Me.btnCriarTabelas.Location = New System.Drawing.Point(16, 48) Me.btnCriarTabelas.Size = New System.Drawing.Size(112, 20) Me.btnCriarTabelas.Text = "Criar Tabelas" ' 'btnInserirDados ' Me.btnInserirDados.Location = New System.Drawing.Point(136, 48) Me.btnInserirDados.Size = New System.Drawing.Size(96, 20) Me.btnInserirDados.Text = "Inserir Dados" ' 'btnSelecionar ' Me.btnSelecionar.Location = New System.Drawing.Point(56, 80) Me.btnSelecionar.Size = New System.Drawing.Size(112, 20) Me.btnSelecionar.Text = "Selecionar Dados" ' 'DataGrid1 ' Me.DataGrid1.Location = New System.Drawing.Point(8, 112) Me.DataGrid1.Size = New System.Drawing.Size(224, 136) Me.DataGrid1.Text = "DataGrid1" ' 'Form1 ' Me.Controls.Add(Me.DataGrid1) Me.Controls.Add(Me.btnSelecionar) Me.Controls.Add(Me.btnInserirDados) Me.Controls.Add(Me.btnCriarTabelas) Me.Controls.Add(Me.btnConectarBd) Me.Controls.Add(Me.btnCriarBd) Me.Menu = Me.MainMenu1 Me.Text = "SQL Server CE" End Sub #End Region 'Variável contem o path do nosso BD, aonde ele será criado e qual BD será usado Dim PathBD As String = "\Dados.sdf" 'Variavél que instancia o objeto de conexão com o BD Dim Conn As SqlCeConnection Private Sub MostraStatus(ByVal pMensagem As String) MessageBox.Show("Status Atual: " & pMensagem, "Status da Operação", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1) End Sub Private Sub btnCriarBd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCriarBd.Click Cursor.Current = Cursors.WaitCursor Try 'Se o arquivo de Banco de Dados não exista, 'o mesmo é criado no caminho do PathBD If Not File.Exists(PathBD) Then Dim SQLEngine As New SqlCeEngine("Data Source=" & PathBD) SQLEngine.CreateDatabase() MostraStatus("Banco de Dados Criado com Sucesso!!!") Else MostraStatus("Banco de Dados já Existe!!!") End If Catch 'Caso ocorra algum erro deve ser tratado aqui Throw End Try Cursor.Current = Cursors.Default End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub btnConectarBd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConectarBd.Click Cursor.Current = Cursors.WaitCursor Try 'Inicia uma instancia da classe SQLCeconnection Conn = New SqlCeConnection("Data Source=" & PathBD) 'Caso a conexão esteja fechada, será possível conectar com o BD If Conn.State = ConnectionState.Closed Then 'Abre a conexão Conn.Open() MostraStatus("Conectado ao Banco de dados " & PathBD & " com sucesso !!!") End If Catch ex As Exception 'Caso ocorra algum tipo de erro, deve ser tratado aqui End Try Cursor.Current = Cursors.Default End Sub Private Sub btnCriarTabelas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCriarTabelas.Click Cursor.Current = Cursors.WaitCursor Dim cmd As New SqlCeCommand( _ "CREATE TABLE PRODUTOS(CODIGO INT IDENTITY PRIMARY KEY NOT NULL, NOME NVARCHAR(30), PRECO MONEY);", Conn) cmd.ExecuteNonQuery() cmd.Dispose() Cursor.Current = Cursors.Default MostraStatus("Tabela criada com Sucesso!!!") End Sub Private Sub btnInserirDados_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInserirDados.Click Cursor.Current = Cursors.WaitCursor Dim cmd As New SqlCeCommand( _ "INSERT INTO PRODUTOS(NOME, PRECO) VALUES('LEITE', 1.5);", Conn) cmd.ExecuteNonQuery() cmd.CommandText = "INSERT INTO PRODUTOS(NOME, PRECO) VALUES('ARROZ', 8.5);" cmd.ExecuteNonQuery() cmd.Dispose() Cursor.Current = Cursors.Default MostraStatus("Inserção concluida com Sucesso!!!") End Sub Private Sub btnSelecionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelecionar.Click Cursor.Current = Cursors.WaitCursor Dim Adp As New SqlCeDataAdapter("SELECT * FROM PRODUTOS", Conn) Dim ds As DataSet = New DataSet Adp.Fill(ds) DataGrid1.DataSource = ds.Tables(0).DefaultView Cursor.Current = Cursors.Default MostraStatus("Dados Selecionados com Sucesso!!!") End Sub End Class

Listagem 1. Código dos Eventos dos Buttons

Com isso, aprendemos um pouco das características do SQL Server CE, e como usar o SQL CE no Visual Studio com a Linguagem VB.net, espero ter ajudado.

Artigos relacionados