2016-08-02 95 views
1

Ich habe eine vorhandene Datenbank auf dem Remote MS SQL server ausgeführt, und ich möchte mit dieser Datenbank von Xcode kommunizieren und interagieren können. Ich schreibe eine Anwendung für OS X in , und die Daten, die die Anwendung verwenden sollte, wird in dieser Remote-Datenbank gespeichert.Xcode Verbindung mit der MS SQL-Datenbank

Das Problem ist, ich kann nicht scheinen, Swift Bibliothek zu finden, die mit der MS SQL server basierten Datenbank verbinden könnte. Bisher habe ich nur diese Open-Source-Bibliothek gefunden: SQLClient in Objective-C, aber es ist ziemlich schwierig, sie einzustellen, zumal ich mit der Objective-C nicht vertraut bin.

Auch sehe ich diese Core-Data Bibliothek erwähnt wird, immer wenn es einige Kommunikation mit der Datenbank ist, aber soweit ich verstehe Core-Data weiß nicht, wie man an die MS SQL Datenbank anschließen.

Hat jemand Erfahrung im Verbinden der Xcode Swift app mit der entfernten MS SQL Datenbank? Wie sollte man das machen? Jede Art von Rat ist mehr als willkommen, denn im Moment bin ich irgendwie mit diesem Problem festgefahren.

+1

verbrauchen Sie klären sollten, dass Sie nicht XCode auf die Datenbank verbinden möchten, aber Ihre Anwendung in Swift geschrieben – FredericP

+0

Bitte benutzen Sie die Lösung ohne Web-Service gefunden? –

Antwort

2

Der ideale Weg ist, Webservices in jede serverseitige Sprache wie PHP, ASP usw. zu schreiben. Die Webservices kommunizieren mit Ihrer MySQL-Datenbank und Ihr schneller Code kommuniziert mit den Webservices.

+0

Ich weiß, der ideale Weg ist, einen Webservice zu schreiben, aber der SQL Server ist remote, ich habe nur die Verbindungszeichenfolge zur Datenbank. Ich bin mir nicht sicher, ob ich überhaupt einen Webservice für einen Remote-Server schreiben kann. Ich kenne nur die Server-Domäne und Benutzer/Passwort-Parameter. Ich denke nicht, dass Sie hier einen Webservice schreiben können? – zwiebl

+0

Ja, Sie können Webservices für entfernte Datenbanken schreiben. Die Server-Domäne ist Ihr Server-Host und Sie haben die Anmeldeinformationen –

0

Es ist wirklich schlecht für eine Anwendung (Mobile, Web, beliebiger Client) direkt aus Sicherheitsgründen auf jede Datenbank zuzugreifen. Clients sollten wirklich nicht auf die Datenbank zugreifen, die oft sehr private/sichere Daten enthält. Es öffnet Schwachstellen (d. H. Sql injection attack).

Eine Reihe von Webdiensten, die in PHP oder Java oder einer Back-End-Technologie geschrieben sind, ist ein sichereres, skalierbares System. Diese Webdienste können eine Verbindung mit der Datenbank herstellen und Daten abrufen. Ihre iOS-Anwendung kann die Webdienste aufrufen und die Daten z. B. in Form von XML oder JSON empfangen.

Also besser Sie Webservice zu verwenden.

Auch Coredata unter 4 persistenten Speicher verwenden können enter image description here

+0

Die Sache ist, dass der Server an einem Remote-Standort ist, ich habe keinen Zugriff auf die Server-Seite. Die Datenbank wird auf einem Server ausgeführt, der sich an der Universität befindet, und ich erhielt nur die Verbindungszeichenfolge, d.h.die Parameter, um sich damit zu verbinden. Alles, was ich über die Serverseite weiß, ist: Datenquelle = {Server_Domäne} \ SQL2012,3000; Initialkatalog = {Mein_Katalog}; persist Sicherheitsinfo = True; Benutzer-ID = {Benutzername}; Passwort = {Passwort}; Kann ich noch einen Web-Service schreiben? – zwiebl

+0

yeah Sie können Ihren Dienst schreiben, wenn Sie die Verbindungszeichenfolge haben! –

2

Ich schlage vor, eine Webservice mit PHP zum Beispiel schreiben MySQL-Daten zu verbrauchen und eine json/xml Antwort liefern: Dies ist ein Beispiel-Code, der Ihnen helfen kann um Daten von der Datenbank zu bekommen und sie nach json zu parsen.

function getOneAdminByUserName($cin){ 

require('connect.php'); 

//fetch table rows from mysql db 
$sql = "SELECT * FROM `admin` WHERE cin= '".$cin."'"; 
$result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection)); 


if(mysqli_num_rows($result)>0){ 
    $myArray = array(); 
while($row =mysqli_fetch_assoc($result)) 
{ 
    array_push($myArray , $row); 
} 
return json_encode($myArray); 
//return json_encode(mysqli_fetch_assoc($result)); 
} 
else{ 
return "no"; 
} 

Dann können Sie Dienst auf Ihrem iOS-App mit AFnetworking

NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"]; 
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
[manager GET:URL.absoluteString parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) { 
    NSLog(@"JSON: %@", responseObject); 
} failure:^(NSURLSessionTask *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}];