Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Konfiguration

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

Code Block
<SqlDataProvider DisplayName="Kundenadressen">

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

...

  • ConnectionString: ConnectionString. Kann , kann verschlüsselt sein.

  • ConnectionProvider: Definiert den Datenbankentyp Typ der Datenbank - 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.

Beispiele

...

MS SQL

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

...

 

...

MySQL

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

 

...

Panel
panelIconIdatlassian-warning
panelIcon:warning:
bgColor#FFEBE6

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

...

Oracle

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

...

Odbc

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

...

PostgreSQL

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

 

...

Panel
panelIconIdatlassian-warning
panelIcon:warning:
bgColor#FFEBE6

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

 

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

Code Block
languagesql
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:

...

Odbc

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

Beispiel

Code Block
languagexml
<SqlDataProvider DisplayName="DatabaseDatenbank">
  <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>