如何无需升级将SQL Server Express 2008 R2连接到Visual Studio 2017
实现Visual Studio 2017窗体应用在Windows XP SP3上运行的解决方案
首先确认你的核心理解是正确的:.NET Framework 4和SQL Server Express 2008 R2均完全支持Windows XP SP3,无需修正。针对你遇到的VS2017无法直接添加2008 R2作为数据源的问题,下面是具体解决步骤:
一、调整项目目标框架
- 右键项目 -> 属性 -> 应用程序
- 在「目标框架」下拉菜单中选择 .NET Framework 4(不要选4.0 Client Profile,全框架兼容性更全面)
- 保存设置,项目会自动重新生成
二、手动配置数据库连接字符串
绕过VS2017的数据源向导,直接在项目的App.config中添加连接字符串:
<connectionStrings> <add name="YourDbConn" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=你的数据库名;Integrated Security=True;Provider=SQLNCLI10.1;" providerName="System.Data.SqlClient" /> </connectionStrings>
Provider=SQLNCLI10.1是SQL Server 2008 R2对应的原生客户端驱动,确保Windows XP能识别并连接数据库- 如果是远程数据库,将
Data Source替换为远程实例地址(如192.168.1.100\SQLEXPRESS)
三、手动编写数据访问代码
放弃VS自动生成的数据集,改用基础ADO.NET类实现数据操作,示例代码如下:
using System.Collections.Generic; using System.Data.SqlClient; using System.Configuration; public class DataAccess { public List<User> GetUsers() { var users = new List<User>(); var connStr = ConfigurationManager.ConnectionStrings["YourDbConn"].ConnectionString; using (var conn = new SqlConnection(connStr)) { conn.Open(); using (var cmd = new SqlCommand("SELECT Id, Name FROM Users", conn)) { using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { users.Add(new User { Id = reader.GetInt32(reader.GetOrdinal("Id")), Name = reader.GetString(reader.GetOrdinal("Name")) }); } } } } return users; } } public class User { public int Id { get; set; } public string Name { get; set; } }
四、编译与客户端环境配置
- 项目编译设置:右键项目 -> 属性 -> 生成 -> 平台目标,选择 x86(Windows XP对32位程序兼容性更好,多数XP机器为32位系统)
- 客户端依赖安装:
- 安装.NET Framework 4 完整安装包(Windows XP SP3需手动安装)
- 安装SQL Server 2008 R2 Native Client(对应x86版本,确保XP能连接数据库实例)
- 若使用本地数据库,需在XP上安装SQL Server Express 2008 R2
可选方案(若需使用数据集)
如果必须使用DataSet/TableAdapter,可以:
- 用Visual Studio 2010打开数据库,生成数据集及相关代码
- 将生成的
.xsd文件、代码文件及配置项复制到VS2017项目中 - 确保VS2017项目的目标框架为.NET4,即可正常使用
内容的提问来源于stack exchange,提问作者Aarón BD
相关产品推荐
相关产品推荐

