在我发表了《如何将数据导入到 SQL Server Compact Edition 数据库中(一)》一文后,有一位读者提出这样的疑问:示例程序是否能够在 PPC 上跑,直接从远程 PC 上的 SQL Server 数据库读取数据,导入到 PPC 上的 SQL Server CE 数据库中?
事实上是可以的!!!
.NET Compact Framework 支持智能设备应用程序直接访问远程的 SQL Server 数据库,命名空间还是原来的System.Data.SqlClient。不过,System.Data.SqlClient 命名空间下的类并不在System.Data.dll 程序集中,而是封装在一个独立的程序集System.Data.SqlClient.dll 中。这个程序集和它的安装包可以在“C:/Program Files/Microsoft Visual Studio 8/SmartDevices/SDK/SQL Server/Client/v2.0”目录下找到。注意,这个程序集需要独立安装,它并不包含在 .NET Compact Framework 的安装包中。
为了证实这一点,我新建了一个叫 CopyTableMobileDemo 的 Visual C# 2005 智能设备项目,添加对 System.Data.SqlServerCe.dll 和 System.Data.SqlClient.dll 的引用,并从原来的示例程序复制了主要代码过来。
接下来有代码几个地方需要稍微修改一下。
1) SQL Server 数据库连接不能使用 IntegratedSecurity=True,要使用 User Id 和 Password。Data Source 要设置成 SQL Server 服务器的 IP 地址或者计算机名称。设置成 IP 地址还是计算机名称是有区别的。如果你的 Windows Mobile 设备或仿真器是通过 ActiveSync 连接到 PC 的,那么请注意 ActiveSync 的连接设置那里,“这台计算机已连接到”选项如果选择的是单位网络,那么请使用计算机名访问,如果选择了 Internet 则使用 IP 地址访问。
//创建源SQLServer数据库连接对象
stringsrcConnString="DataSource=bjb-libo;InitialCatalog=Northwind;UserId=sa;Password=1234;";
SqlConnectionsrcConnection=newSqlConnection(srcConnString);
2) SQL Server CE 数据库连接要换成智能设备的文件路径,如果 Data Source 只设置文件名,那么示例程序将会在设备的根目录下创建 SQL Server CE 数据库文件。
//创建目标SQLServerCompactEdition数据库连接对象
stringdestConnString="DataSource=Northwind.sdf";
SqlCeConnectiondestConnection=newSqlCeConnection(destConnString);
3) 由于 .NET Compact Framework 只支持 string[] string.Split(params char[] separator),那么首先 SQL Server CE 数据库创建脚本中每条命令的分隔符 GO 需要替换成分号(';')。
CREATETABLEProducts(
ProductIDintNOTNULLCONSTRAINTPK_ProductsPRIMARYKEY,
ProductNamenvarchar(40)NOTNULL,
SupplierIDintNULL,
CategoryIDintNULL,
QuantityPerUnitnvarchar(20)NULL,
UnitPricemoneyNULL,
UnitsInStocksmallintNULL,
UnitsOnOrdersmallintNULL,
ReorderLevelsmallintNULL,
DiscontinuedbitNOTNULL
);
CREATETABLEEmployees(
EmployeeIDintNOTNULLCONSTRAINTPK_EmployeesPRIMARYKEY,
LastNamenvarchar(20)NOTNULL,
FirstNamenvarchar(10)NOTNULL,
Titlenvarchar(30)NULL,
TitleOfCourtesynvarchar(25)NULL,
BirthDatedatetimeNULL,
HireDatedatetimeNULL,
Addressnvarchar(60)NULL,
Citynvarchar(15)NULL,
Regionnvarchar(15)NULL,
PostalCodenvarchar(10)NULL,
Countrynvarchar(15)NULL,
HomePhonenvarchar(24)NULL,
Extensionnvarchar(4)NULL,
PhotoimageNULL,
NotesntextNULL,
ReportsTointNULL,
PhotoPathnvarchar(255)NULL
);
4) 创建 SQL Server CE 数据库的方法也需要相应改动。
publicstaticvoidVerifyDatabaseExists(stringconnectionString)
{
using(SqlCeConnectionconnection=newSqlCeConnection(connectionString))
{
if(!File.Exists(connection.Database))
{
using(SqlCeEngineengine=newSqlCeEngine(connection.ConnectionString))
{
engine.CreateDatabase();
string[]commands=Properties.Resources.DbSchema.Split(';');
SqlCeCommandcommand=newSqlCeCommand();
command.Connection=connection;
connection.Open();
stringquery;
for(inti=0;i<commands.Length;i++)
{
query=commands[i].Trim();
if(!string.IsNullOrEmpty(query))
{
command.CommandText=query;
command.ExecuteNonQuery();
}
}
}
}
}
}
其他的地方都不需要修改,让我们看看运行的效果:
总结:在 Windows Mobile 上直接将远程 SQL Server 的数据导入到 SQL Server CE 中是可行的,并且利用 CopyTable 方法可以很轻松得实现多个表的数据导入。不过从智能设备直接访问 SQL Server 数据库存在一定的局限性,它比较适合局域网环境,并且需要开放 SQL Server 的端口。另外,我还没有测试过大数据量的导入,我担心会存在内存不足的问题。大家可以测试一下!
相关推荐
excel数据导入到sql server数据库中,
将Excel数据导入到SQLServer中,可以选择要导入的Excel文件和Sheet名称,表名。通过自动编写存储过程来实现导入功能。实际使用无须这么麻烦,可以作为数据导入和存储过程参考例子。
Oracle数据库导入到SqlServer步骤(图文篇),自己写的,碰到不少问题,终于解决了。
该文档实现将access数据库中的表中的所有数据导入到sqlserver2005数据库
利用 Microsoft SQL Server Migration Assistant for Oracle.exe(微软数据库迁移工具) ,将oracle数据库迁移数据到SQL server详解。
将mysql数据库转换为sql server的数据库,或者将sql server数据库转换...这里介绍一个使用sql的mmc的方法 ,将sql server的数据转化为mysql的数据库,将源和目的反之,就可以将mysql的数据库转化为sql server的数据库。
怎样将Excel中的数据导入到SQL Server 2000数据库中
利用EXCEL中的宏,直接将excel中的数据导入到sqlServer数据库脚本
vs打开或创建工程时,弹框出现"创建或打开浏览数据库文件时发生错误。Intellisense和浏览信息江不能用于C++项目。请确保已安装Microsoft SQL Server Compact 3.5",并且类向导打不开。安装后可解决上述问题。
有时候我们可能会把CSV中的数据导入到某个数据库的表中,比如做报表分析的时候。 对于这个问题,我想一点也难不倒程序人员吧!但是要是SQL Server能够完成这个任务,岂不是更好! 对,SQL Server确实有这个功能。 ...
实现MAPINFO MIF数据导入到SQL SERVER数据库中
利用C#编程将Excel中的数据导入到Sqlserver数据库中
向sql server数据库插入中文时显示乱码
精简版SQL Server 2005 数据库导出、导入办法 应该有用~
将Mysql数据库导入到SQLSERVER里面
oracle数据库导入数据到sql server数据库操作步骤说明文档
谈谈数据从sql server数据库导入mysql数据库的体验
很多时候需要我们把Excel中的数据快速导入到Sqlserver数据库中,但是sqlserver自带的代入很麻烦,而且速度很慢,一旦电脑配置低 就得卡死,我做的这个小程序可以十分迅速的把数据导入到您想要导入的表中,很方便。
将sqlserver数据导入MySql中的工具,里面附带说明