Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »


Dieses Feature ist in der nächsten primedocs Version verfügbar.

Mit dem SqlDataProvider können Sie auf beliebig konfigurierbare SQL-Datenbanken zugreifen.

Konfiguration

Neben der Mapping- & SearchParameters-Konfiguration, welche alle DataProvider der Datenschnittstelle benötigen, kann der SqlDataProvider über das Options-Element konfiguriert werden:

<SqlDataProvider DisplayName="Kundenadressen">
    <Options>
      <ConnectionString>{ConnectionString}</ConnectionString>
      <ConnectionProvider>System.Data.SqlClient</ConnectionProvider>
      <Query>
        SELECT * FROM Users WHERE FirstName Like '%' + @firstName + '%'
      </Query>
    </Options>
    ...
</SqlDataProvider>

Unter Options wird die Verbindung und die Datenbankabfrage definiert.

  • ConnectionString: ConnectionString. Kann verschlüsselt sein.

  • ConnectionProvider: Definiert den Datenbankentyp - unterstützte Typen:

    • System.Data.Odbc

    • System.Data.SqlClient

    • MySql.Data.MySqlClient

    • Oracle.ManagedDataAccess.Client

  • Query: Definiert den SQL Query, hierbei werden die SearchParameters als SQL Parameter behandelt.

Der SQL Query muss in dem Format für die jeweilige Zieldatenbank sein. Da alle Suchparameter von der SearchParameters-Konfiguration als SQL Parameter behandelt werden, muss der jeweilige SQL Parameter Syntax der Zieldatenbank eingehalten werden.

Beispiel: MS SQL

SELECT FirstName, LastName FROM Users
WHERE FirstName LIKE '%' + @firstName + '%' AND LastName LIKE '%' + @lastName + '%'

 

Beispiel: MySQL

SELECT FirstName, LastName FROM Users
WHERE FirstName LIKE Concat('%', @firstName, '%') AND LastName LIKE Concat('%', @lastName, '%')

 

ACHTUNG
Bei Oracle, Odbc und PostgreSQL muss die Reihenfolge der Platzhalter in der Query mit der Reihenfolge der "SearchParameters" übereinstimmen!

Beispiel: Oracle

SELECT FirstName, LastName from Users
WHERE UPPER(NVL(FirstName, ' ')) Like UPPER('%' || :firstName || '%') AND UPPER(NVL(LastName, ' ')) Like UPPER('%' || :lastName || '%')

Beispiel: Odbc

SELECT FirstName, LastName FROM Users
WHERE FirstName LIKE '%' + ? + '%' AND LastName LIKE '%' + ? + '%'

Beispiel: PostgreSQL

SELECT FirstName, LastName FROM Users
WHERE UPPER(FirstName) LIKE UPPER('%' || ? || '%') AND UPPER(LastName) LIKE UPPER('%' || ? || '%')

 

ACHTUNG
Die Einschränkung der Reihenfolge hat zur Folge, dass ein Parameter in der Query genau einmal verwendet werden kann.

 

Folgende MS SQL Query kann nicht direkt zu Oracle oder Odbc übersetzt werden:

SELECT FirstName, MiddleName, LastName FROM Users
WHERE FirstName LIKE '%' + firstName + '%' OR MiddleName LIKE '%' + firstName + '%'

Wenn ein Parameter auf mehr als eine Spalte verglichen werden muss, dann können diese Spalten im SELECT mittels der jeweiligen Funktion des Datenbanksystems kombiniert werden:

Beispiel: Odbc

SELECT STRING(FirstName, ' ', MiddleName) AS CompleteName, LastName FROM Users
WHERE CompleteName LIKE '%' + ? + '%'

Beispiel

<SqlDataProvider DisplayName="Database">
  <SearchParameters>
    <Text Id="Name" Label="Name" />
  </SearchParameters>
  <Options>
    <ConnectionString>Data Source=localhost;Initial Catalog=Customers;User Id={user};Password={pwd};</ConnectionString>
    <ConnectionProvider>System.Data.SqlClient</ConnectionProvider>
    <Query>
      SELECT * FROM Customers WHERE Name Like '%' + @Name + '%'
    </Query>  
  </Option>
  <Mapping>
    <Map Source="Name" Target="CompanyName" />
    <Map Source="Street" Target="Street" />
    <Map Source="Zip" Target="PostalCode" />
    <Map Source="City" Target="City" />
    <Map SourceValue="CH" Target="Country" />
  </Mapping>
</SqlDataProvider>

  • No labels