从移动设备到Windows Server 2008的连接问题(Windows Mobile 6.5)

时间:2014-03-19 22:47:53

标签: c# sql-server sql-server-2008 windows-mobile

我一直在网上搜索以下问题,但似乎不是答案。

我在Visual Studio 2008中创建了一个非常简单的移动应用程序。它应该连接到远程sql数据库以进行简单的读取。 sql server是2008.物理设备在这里,所以我可以部署到它并在设备上运行(不使用模拟器)。

我正在使用的连接字符串是:(并且我尝试了不同的连接字符串)

Data Source=[ServerIP];Initial Catalog = [DatabaseName]; User ID = [ID]; Password = [Password];

我改变了这个只是粘贴在这里。

用于连接数据库的实际代码是:

SqlConnection sqlConnection1 = new SqlConnection("MyConnectionString as above");
        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;
        string SKU = "";
        cmd.Parameters.Add(new SqlParameter("@barcode", Barcode));
        cmd.CommandText = "SELECT SKU, Quantity FROM Catalog.Barcodes WHERE Barcode = @barcode";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = sqlConnection1;

        sqlConnection1.Open();

        reader = cmd.ExecuteReader();
        // Data is accessible through the DataReader object here.
        while (reader.Read())
        {
            SKU = reader.GetString(0);
        }


        sqlConnection1.Close();

例外情况是打开连接时:

在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()的System.Data.SqlClient.SqlInternalConnection.OnError(sqlException异常,TdsParserState状态)的System.Data.SqlClient.SqlConnection.OnError(SqlException异常,TdsParserState状态)中的 SqlException ..... System.Data.SqlClient.SqlInternatlConnection.OpenAndLogin().....

我确保system.data.sqlclient引用是针对紧凑框架的。 C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition \ v3.5 \ Devices \ Client \ System.Data.SqlClient.dll

代码也被复制到标准的winform中并且可以处理。 sql server是remotley可访问的,因为它每天使用与我使用的相同凭据。该设备通过wifi连接到互联网,并通过网络浏览进行测试。

希望我完全注意到目前为止我所做的和完整的情况。

那么这里的问题是什么?困惑我。

3 个答案:

答案 0 :(得分:1)

我终于找到了答案。对我来说这是一个奇怪的,因为我会说它没有它就可以工作。问题在于连接字符串。我在服务器地址之后缺少端口号1433。这似乎是.net紧凑框架的要求。

答案 1 :(得分:0)

将SQL数据源控件放到页面上,使用GUI可以连接到数据库并提取一些数据吗?如果是这样,你可以保存连接信息(web.config)并使用ConfigurationManager.ConnectionStrings从那里使用它

string connStr = ConfigurationManager.ConnectionStrings["mySavedConnectionStringName"].ConnectionString;

答案 2 :(得分:0)

我认为您的连接设置错误。更好地设置一步一步:

try{
    string connStr = "Data Source=192.168.0.2;Initial Catalog=myDataBase/myInstance;
    Integrated Security=SSPI; User ID=myDomain\myUsername;Password=myPassword;";
    //new connection
    SqlConnection sqlConnection1 = new SqlConnection(connStr);
    sqlConnection1.Open();
    //new sqlCommand
    SqlCommand cmd = new SqlCommand();
    SqlDataReader reader;
    string SKU = "";
    cmd.Parameters.Add(new SqlParameter("@barcode", Barcode));
    cmd.CommandText = "SELECT SKU, Quantity FROM Catalog.Barcodes WHERE Barcode = @barcode";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;
    //create reader
    reader = cmd.ExecuteReader();
    // Data is accessible through the DataReader object here.
    while (reader.Read())
    {
        SKU = reader.GetString(0);
    }
    sqlConnection1.Close();
 }catch (Exception ex){
    System.Diagnostics.Debug.WriteLine("Exception in sql code:" + ex.Message);
 }

必须将连接字符串更改为您的设置。在连接打开之前,请不要将连接分配给命令。

连接字符串:请参阅https://www.connectionstrings.com/sql-server-2008/

Trusted Connection from a CE device

A Windows CE device is most often not authenticated and logged in to a domain but it is 
possible to use SSPI or trusted connection and authentication from a CE device using 
this connection string.
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
User ID=myDomain\myUsername;Password=myPassword;