Xamarin SqlServer无法获得连接

时间:2018-08-29 14:40:44

标签: android .net sql-server xamarin core

我在xamarin上使用实体框架构建应用程序,我在其中比较一些数据。但是当我启动我的“ fetchdata”功能时,我收到错误消息:

e : nat -> Set

现在我的孔设置准备就绪了,我看到了很多有关xamarin / android的帖子,并且无法连接到SqlServer。但是时间过去了,所以我希望有可能。

是否可以通过xamarin在具有.net核心的sqlServer中获取数据?

3 个答案:

答案 0 :(得分:0)

是的,有可能(HuurrAYY!): 我是.net核心,C#等的新手,对我来说,要使其正常工作真是难上加难。 因此,这里有其他寻求帮助的菜鸟:

我使用的指南: 使用实体框架构建Android应用 https://medium.com/@yostane/data-persistence-in-xamarin-using-entity-framework-core-e3a58bdee9d1 https://blog.xamarin.com/building-android-apps-entity-framework/

脚手架 https://cmatskas.com/scaffolding-dbcontext-and-models-with-entityframework-core-2-0-and-the-cli/

我是怎么做到的:

  1. 构建普通的Xamarin应用。
  2. 像教程中那样创建新的.net解决方案(不要写您的实体框架类)
  3. 创建第三个解决方案,它必须是.net核心控制台应用程序
  4. 在您的CONSOLE应用程序中将数据库折叠起来,以在“ xamarin .net”解决方案中移动所有已创建的类和文件夹,并更改名称空间
  5. 准备出发!

侧面节点:每个解决方案中都需要NuGet:

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer

[编辑:每种解决方案都需要NuGet]

答案 1 :(得分:0)

这是我使用Sql_Common.cs放入SQL_Class文件夹中的字符串
用实际参数填充支架托架(也要卸下支架制动器)。

public static string SQL_connection_string = @"data source={server_address};initial catalog={database_name};user id={user_id};password={password};Connect Timeout={seconds}";

然后,只要需要,我就可以从任何xamarin代码中访问它,就像在asp.net c#中使用的那样 这对我的应用程序没有任何问题。

using (SqlConnection Sql_Connection = new SqlConnection(Sql_Common.saralEHR_connection_string))

但是正如@Jason在他的第一个答复中提到的那样,我也将再次获得安全性部分的确认。我在将Package发布到Google Play之前经验丰富,他们使用哈希密钥代码对App文件进行加密,然后将其上传到服务器

答案 2 :(得分:0)

我正在这样做(工作片段):

string connectionString = @"data source={server};initial catalog={database};user id={user};password={password};Connect Timeout=10";
        string databaseTable = "{table name}";
        string selectQuery = String.Format("SELECT count(*) as Orders FROM {0}", databaseTable);
        try
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                //open connection
                connection.Open();

                SqlCommand command = new SqlCommand(selectQuery, connection);

                command.Connection = connection;
                command.CommandText = selectQuery;
                var result = command.ExecuteScalar().ToString();
                //check if there is result
                if(result != null)
                {
                    OrdersLabel.Text = result;
                }
            }
        }
        catch (Exception ex)
        {
            OrdersLabel.Text = ex.Message;
        }

它工作正常,但API调用更加优雅。 希望对您有所帮助。