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: |
Tamanho-Fixo Unicode dados com tamanho máximo de 255 caracteres. |
national character varying(n) Sinônimo: |
Tamanho-Váriavel Unicode dados com tamanho de 1 a 255 caracteres. |
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.