Como especificar o local do arquivo SDF usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0

Exemplo de string de conexão com SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0

Exemplo de string de conexão

Essa é uma string de conexão do provider Microsoft.SQLSERVER.MOBILE.OLEDB.3.0 para se conectar com SQL Server Compact.

Como especificar o local do arquivo SDF

Muitas vezes o banco de dados .SDF não está executando no diretório atual, por isso torna-se necessário definir programaticamente o caminho para o arquivo SDF. Este é um exemplo (.net C#) de como fazer isso quando o arquivo SDF está localizado no mesmo diretório que a aplicação em execução.

Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\MyData.sdf;

Conexão através de diferentes linguagens

C#

Exemplo de código em C# de conexão com SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0:

using System;
using System.Data.OleDb;

class DatabaseConnection {
    static void Main() {
        // Define a string de conexão SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
        string connectionString = "Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=\" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + \"\\\\MyData.sdf;";

        using (OleDbConnection connection = new OleDbConnection(connectionString)) {
            try {
                // Abre a conexão
                connection.Open();

                Console.WriteLine("Conexão aberta com sucesso!");

                //
                // INSIRA SEU CÓDIGO AQUI
                //

            } catch (OleDbException ex) {
                // Erros específicos do OleDbException
                Console.WriteLine("Erro: " + ex.Message);
            } catch (Exception ex) {
                // Outros erros
                Console.WriteLine("Erro: " + ex.Message);            
            } finally {
                // Fecha a conexão
                if (connection != null) {
                    connection.Close();
                    Console.WriteLine("Conexão fechada.");
                }
            }
        }
    }
}

Se estiver usando .NET Core, você precisa antes instalar o pacote System.Data.OleDb com o seguinte comando:

dotnet add package System.Data.OleDb

VB.NET

Exemplo de código em VB.NET de conexão com SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0:

Imports System
Imports System.Data.OleDb

Module DatabaseConnection

    Sub Main()
        Dim connectionString As String
        
        ' Define a string de conexão SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
        connectionString = "Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\MyData.sdf;"

        Using connection As New OleDbConnection(connectionString)
            Try
                ' Abre a conexão
                connection.Open()

                Console.WriteLine("Conexão aberta com sucesso!")

                '
                ' INSIRA SEU CÓDIGO AQUI
                '

            Catch ex As OleDbException
                ' Erros específicos do OleDbException
                Console.WriteLine("Erro: " & ex.Message)
            Catch ex As Exception
                ' Outros erros
                Console.WriteLine("Erro: " & ex.Message)
            Finally
                ' Fecha a conexão
                If connection IsNot Nothing Then
                    connection.Close()
                    Console.WriteLine("Conexão fechada.")
                End If
            End Try
        End Using
    End Sub

End Module

ASP Clássico

Exemplo de código em ASP Clássico de conexão com SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0:

<%
Dim conn, connectionString

' Cria a string de conexão para SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
connectionString = "Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\MyData.sdf;"

Set conn = Server.CreateObject("ADODB.Connection")

' Abre a conexão
On Error Resume Next
conn.Open connectionString

' Verifica se a conexão foi aberta
If conn.State = 1 Then
    Response.Write "Conexão aberta com sucesso!"
    '
    ' INSIRA SEU CÓDIGO AQUI
    '
Else
    If Err.Number <> 0 Then
        Response.Write "Erro: " & Server.HTMLEncode(Err.Description)
    Else
        Response.Write "Erro: A conexão não pode ser estabelecida."
    End If

End If

On Error GoTo 0

' Fecha a conexão
conn.Close
Set conn = Nothing

%>

VBScript

Exemplo de código em VBScript de conexão com SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0:

Dim conn, connectionString

' Define a string de conexão SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
connectionString = "Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\MyData.sdf;"

Set conn = CreateObject("ADODB.Connection")

' Abre a conexão
On Error Resume Next
conn.Open connectionString

' Verifica se a conexão foi aberta
If conn.State = 1 Then
    Wscript.Echo "Conexão aberta com sucesso!"
    '
    ' INSIRA SEU CÓDIGO AQUI
    '
Else
    If Err.Number <> 0 Then
        WScript.Echo "Erro: " & Err.Description
    Else
        WScript.Echo "Erro: A conexão não pode ser estabelecida."
    End If

End If

On Error GoTo 0

' Fecha a conexão
conn.Close
Set conn = Nothing
Wscript.Echo "Conexão fechada."

JScript

Exemplo de código em JScript de conexão com SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0:

var conn, connectionString;

// Define a string de conexão SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
connectionString = "Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=\" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + \"\\\\MyData.sdf;";

conn = new ActiveXObject("ADODB.Connection");

// Abre a conexão
try {
    // Abre a conexão
    conn.Open(connectionString);
    if (conn.State === 1) {
        WScript.Echo("Conexão aberta com sucesso!");
        //
        // INSIRA SEU CÓDIGO AQUI
        //
    } else {
        WScript.Echo("Erro: A conexão não pode ser estabelecida.");
    }
} catch (e) {
    // Exibe a mensagem de erro
    WScript.Echo("Erro: " + e.description);
} finally {
    // Fecha a conexão
    conn.Close();
    conn = null;
}

C++

Exemplo de código em C++ de conexão com SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0:

#include <iostream>
#include <cstdlib>
#include <string>
#include <atldbcli.h>

int main() {
    // Inicializa COM
    HRESULT hr = CoInitialize(NULL);
    if (FAILED(hr)) {
        std::cout << "Falha ao inicializar COM. Erro: " << hr << std::endl;
        return EXIT_FAILURE; // Encerra se a COM não puder ser inicializada
    }

    // Define a string de conexão SQL Server Compact usando Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
    std::wstring connectionString = L"Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=\" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + \"\\\\MyData.sdf;";


    CDataSource dataSource;
    CSession session;
    hr = dataSource.OpenFromInitializationString(connectionString.c_str());
    if (SUCCEEDED(hr)) {
        // Abre uma sessão
        hr = session.Open(dataSource);
        if (SUCCEEDED(hr)) {
            std::cout << "Conexão aberta com sucesso!" << std::endl;

            //
            // INSIRA SEU CÓDIGO AQUI
            //

            // Fecha a sessão e a conexão com o banco de dados
            session.Close();
            dataSource.Close();
        } else {
            std::cout << "Falha ao abrir sessão. Erro: " << hr << std::endl;
        }
    } else {
        std::cout << "Falha ao abrir conexão. Erro: " << hr << std::endl;
    }

    // Finaliza COM
    CoUninitialize();

    return EXIT_SUCCESS;
}