【问题标题】:Xcode connect to the MS SQL databaseXcode 连接到 MS SQL 数据库
【发布时间】:2016-12-07 14:33:30
【问题描述】:

我在远程MS SQL server 上启动并运行了一个现有数据库,我希望能够从Xcode 与该数据库进行通信和交互。我正在为Swift 中的OS X 编写应用程序,应用程序应使用的数据存储在该远程数据库中。

问题是,我似乎找不到任何可以连接到基于MS SQL server 的数据库的Swift 库。到目前为止,我只找到了这个开源库:SQLClient in Objective-C,但是设置起来相当困难,尤其是我对Objective-C不熟悉。

此外,我一直看到这个Core-Data 库在与数据库进行一些通信时被提及,但据我了解Core-Data 不知道如何连接到MS SQL 数据库。

有没有人有将Xcode Swift app 连接到远程MS SQL 数据库的经验?应该如何做到这一点?任何形式的建议都非常受欢迎,因为现在我有点被这个问题所困扰。

【问题讨论】:

  • 你应该澄清你不希望 XCode 连接到数据库,而是你的应用程序,用 Swift 编写
  • 你找到没有网络服务的解决方案了吗?
  • 你好@Zwiebl!请问您找到解决方案了吗?我和你一模一样,迫切希望让我的 MacOS (OSX) 连接到 Sql Server,但在任何地方都找不到任何可读或可理解的指令。如果您找到一个或指向我可以开始挖掘的链接,请提供帮助。非常感谢

标签: ios objective-c sql-server swift macos


【解决方案1】:

理想的方式是用任何服务器端语言(如 php、asp 等)编写 webservices。webservices 将与您的 mysql 数据库通信,您的 swift 代码将与 webservices 通信。

【讨论】:

  • 我知道理想的方式是写一个webservice,但是SQL server是远程的,我只有数据库的连接字符串。我不确定我是否能够为远程服务器编写 Web 服务?我只知道服务器域和用户/密码参数。我不认为在这里编写网络服务是一种选择?
  • 是的,您可以为远程数据库编写 Web 服务。服务器域是您的服务器主机,并且您拥有凭据
【解决方案2】:

我建议使用 php 编写一个 web 服务,例如使用 mysql 数据并提供 json/xml 响应:这是一个可以帮助您从数据库获取数据并将其解析为 json 的代码示例。

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";
}

然后您可以使用AFnetworking 在您的 ios 应用上使用服务

 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);
}];

【讨论】:

    【解决方案3】:

    应用程序(移动设备、网络、任何客户端)直接访问任何数据库以解决安全问题真的很糟糕。客户真的不应该访问数据库,该数据库通常保存着非常私密/安全的数据。它打开了漏洞(即 sql 注入攻击)。

    一组用 php 或 java 或一些后端技术编写的 Web 服务是一个更安全、可扩展的系统。这些 Web 服务可以连接到数据库并检索数据。您的 iOS 应用程序可以调用 Web 服务并接收数据。例如,以 XML 或 JSON 的形式。

    所以你最好使用网络服务。

    coredata 也可以使用以下 4 个持久存储

    【讨论】:

    • 问题是服务器位于远程位置,我无权访问服务器端。该数据库在位于大学的服务器上运行,我只得到了连接字符串,即连接到它的参数。我对服务器端的了解是:data source={server_domain}\SQL2012,3000;initial catalog={my_catalog};persist security info=True;user id={username};password={password};我还能写网络服务吗?
    • 是的,如果你有连接字符串,你可以编写你的服务!
    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多