数据库常用C#代码概述

SQL Server Mobile 数据库值得学习的东西很多,今天重点学习数据库常用C#代码,包括创建数据库、验证和修复数据库等方面。

整理几段操作 SQL Server Mobile 数据库常用C#代码,供刚刚接触 SQL Server Mobile 开发的朋友参考。

创建数据库

// 创建数据库  


File.Delete("Test.sdf");  



SqlCeEngine engine = new SqlCeEngine(  




"Data Source='Test.sdf';LCID=1033;Password=\"s$;2'!dS64\";Encrypt=TRUE;");  



engine.CreateDatabase();  

验证和修复数据库

// 验证和修复数据库  



SqlCeEngine engine = new SqlCeEngine("Data Source=AdventureWorks.sdf");  




if (false == engine.Verify())  



{  


MessageBox.Show("Database is corrupted.");  


engine.Repair(null, RepairOption.RecoverCorruptedRows);  


} 

压缩数据库

// 压缩数据库  


// 通过从现有文件新建数据库文件来回收 SQL Server Mobile 数据库中浪费的空间。  


// 此方法还可用来更改数据库的排序顺序、加密或密码设置。  


// 该连接字符串指定一个指向将由此方法创建的目标数据库的连接。  


// 如果指定的数据库已经存在或者具有相同名称的另一文件已经存在,则会引发异常。  


// 如果为连接字符串传递空字符串,则新的数据库文件将改写旧的数据库文件,  


// 但名称保持不变。  



SqlCeEngine engine = new SqlCeEngine("Data Source=AdventureWorks.sdf");  



//engine.Compact(null);  



engine.Compact("Data Source=; Password=a@3!7f$dQ;");  

收缩数据库

// 收缩数据库  


// 通过将空页移动到文件的结尾然后截断该文件,  


// 来回收 SQL Server Mobile 数据库中浪费的空间。  


// 与 Compact 方法不同,Shrink 方法不创建临时数据库文件,  


// 而是将所有空页和未分配的页都移到了文件的结尾,然后截断,从而减小数据库的总大小。  



SqlCeEngine engine = new SqlCeEngine("Data Source=AdventureWorks.sdf");  



engine.Shrink();  

合并复制

// 合并复制  


// 实例化并配置 SqlCeReplication 对象  



SqlCeReplication repl = new SqlCeReplication();  




repl.InternetUrl = "http://www.adventure-works.com/sqlmobile/sqlcesa30.dll";  




repl.InternetLogin = "MyInternetLogin";  




repl.InternetPassword = "<password>";  




repl.Publisher = "MyPublisher";  




repl.PublisherDatabase = "MyPublisherDatabase";  




repl.PublisherLogin = "MyPublisherLogin";  




repl.PublisherPassword = "<password>";  




repl.Publication = "MyPublication";  




repl.Subscriber = "MySubscriber";  




repl.SubscriberConnectionString = "Data Source=MyDatabase.sdf";  



 


// 创建一个本地 SQL Server Mobile 数据库的订阅  


repl.AddSubscription(AddOption.CreateDatabase);   


// 跟 SQL Server 数据库进行同步  


repl.Synchronize();  


 


// 清理 repl 对象  


repl.Dispose();  

远程数据访问(RDA)

//远程数据访问  


//实例化并配置 SqlCeRemoteDataAccess 对象  



SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess();  




rda.InternetUrl = "http://www.adventure-works.com/sqlmobile/sqlcesa30.dll";  




rda.InternetLogin = "MyInternetLogin";  




rda.InternetPassword = "<password>";  




rda.LocalConnectionString = "Data Source=MyDatabase.sdf";  



 


//从 SQL Server 下载数据  


rda.Pull(  


"Employees",  


"SELECT * FROM DimEmployee",  



"Provider=sqloledb;server=MySqlServer;database=AdventureWorks;uid=sa;pwd=;",  



RdaTrackOption.TrackingOnWithIndexes,  


"ErrorTable");  


 


//  


//修改本地数据  


//  


 


//将已修改的数据上传到 SQL Server  


rda.Push(  


"DimEmployee",  



"Provider=sqloledb;server=MySqlServer;database=AdventureWorks;uid=sa;pwd=;");  



 


//提交 SQL 语句在 SQL Server 上执行  


rda.SubmitSql(  


"CREATE TABLE MyRemoteTable (colA int)",  



"Provider=sqloledb;server=MySqlServer;database=AdventureWorks;uid=sa;pwd=;");  

使用 SqlCeResultSet

// 使用 SqlCeResultSet  


// 创建 SQL Server Mobile 数据库连接  



SqlCeConnection conn = new SqlCeConnection("Data Source=Northwind.sdf");  



 


// 创建并配置 SqlCeCommand 对象  



SqlCeCommand cmd = conn.CreateCommand();  




cmd.CommandText = "SELECT * FROM Orders";  



 


// 创建 SqlCeResultSet 对象,并配置为可滚动、可更新、检测数据源更改  



ResultSetOptions options = ResultSetOptions.Scrollable |  



ResultSetOptions.Sensitive |  


ResultSetOptions.Updatable;  



SqlCeResultSet resultSet = cmd.ExecuteResultSet(options);  



 


// 创建 ResultSetView 对象,配置为只显示序号为 1,3,5,8 的列  



ResultSetView resultSetresultSetView = resultSet.ResultSetView;  




int[] ordinals = new int[] { 1,3,5,8};  




resultSetView.Ordinals = ordinals;  



 


// 将 ResultSetView 绑定到 DataGrid 控件  



this.dataGrid.DataSource = resultSetView;  

处理 SqlCeException

相关推荐