我一直在网上搜索以下问题,但似乎不是答案。
我在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状态)中的我确保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连接到互联网,并通过网络浏览进行测试。
希望我完全注意到目前为止我所做的和完整的情况。
那么这里的问题是什么?困惑我。
答案 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;