WCF开发(7) 查询SQLServer数据库(简单实现)
2018-01-23 10:59
239 查看
1.写服务(服务端)
2.启动发布服务(服务端)
3.引用服务(客户端)
4.调用服务(客户端)
5.结果
![](http://img.blog.csdn.net/20180123105900696?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGxoc3d3aGE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
6.hololens测试:没问题
7.后续:1.界面修改,能够查询所有表。2.用EF
这就是一次简单的WCF的应用
[ServiceContract] public interface ISQLServerService { [OperationContract] SQLResult Query(SQLInfo info); [OperationContract] SQLResult Execute(SQLInfo info); } public class SQLServerService : ISQLServerService { public SQLResult Execute(SQLInfo info) { SQLResult result = new SQLResult(); string connectString = info.Server.GetConnectionString(); using (SqlConnection connection = new SqlConnection(connectString)) { try { connection.Open(); SqlCommand sqlCmd = new SqlCommand(info.Sql, connection); int rowCount=sqlCmd.ExecuteNonQuery(); connection.Close(); result.Data = rowCount.ToString(); } catch (Exception ex) { result.ErrorMessage = ex.ToString(); } } return result; } public SQLResult Query(SQLInfo info) { SQLResult result = new SQLResult(); string connectString = info.Server.GetConnectionString(); using (SqlConnection connection = new SqlConnection(connectString)) { try { connection.Open(); SqlDataAdapter sqlDa = new SqlDataAdapter(info.Sql, connection); DataTable dt = new DataTable(); dt.TableName = info.TableName; if (string.IsNullOrEmpty(dt.TableName)) { dt.TableName = "DataTable"; } sqlDa.Fill(dt); connection.Close(); System.IO.TextWriter tw = new System.IO.StringWriter(); dt.WriteXml(tw); string xml = tw.ToString(); result.Data = xml; } catch (Exception ex) { result.ErrorMessage = ex.ToString(); } } return result; } }
[DataContract] public class SQLInfo { [DataMember] public SQLServerDb Server { get; set; } [DataMember] public string Sql { get; set; } [DataMember] public string TableName { get; set; } } [DataContract] public class SQLResult { [DataMember] public string Data { get; set; } [DataMember] public string ErrorMessage { get; set; } } [DataContract] public class SQLServerDb { [DataMember] public string Server { get; set; } [DataMember] public string Database { get; set; } [DataMember] public string User { get; set; } [DataMember] public string Password { get; set; } public string GetConnectionString() { //"Server = 192.168.1.155,1433; Database = IDC_Esop; Persist Security Info = true; User ID = sa; Password = 123456; Connect Timeout = 10;" return string.Format("Server = {0},1433; Database = {1}; Persist Security Info = true; User ID = {2}; Password = {3}; Connect Timeout = 10;", Server, Database, User, Password); } }
2.启动发布服务(服务端)
3.引用服务(客户端)
4.调用服务(客户端)
private void BtnQuerySql_Click(object sender, RoutedEventArgs e) { string sql = TbSql.Text; QuerySql(sql); } private void BtnExecuteSql_Click(object sender, RoutedEventArgs e) { ExecuteSql(TbSql.Text); } private static SQLServerDb GetSQLServerDb() { SQLServerDb sqlDb = new SQLServerDb(); sqlDb.Server = "192.168.1.155"; sqlDb.Database = "topviewxp"; sqlDb.User = "sa"; sqlDb.Password = "123456"; return sqlDb; } private async void QuerySql(string sql) { try { SQLInfo info = new SQLInfo(); info.Server = GetSQLServerDb(); info.Sql = sql; info.TableName = "NameToType"; SQLServerServiceClient sqlClient = GetSQLServerServiceClient(); SQLResult result = await sqlClient.QueryAsync(info); TBResult.Text = result.GetText(); } catch (Exception ex) { TBResult.Text = ex.ToString(); } } private async void ExecuteSql(string sql) { try { SQLInfo info = new SQLInfo(); info.Server = GetSQLServerDb(); info.Sql = sql; info.TableName = "NameToType"; SQLServerServiceClient sqlClient = GetSQLServerServiceClient(); SQLResult result = await sqlClient.ExecuteAsync(info); TBResult.Text = result.GetText(); } catch (Exception ex) { TBResult.Text = ex.ToString(); } } public SQLServerServiceClient GetSQLServerServiceClient() { //return new SQLServerServiceClient(); string ip = CbIpList.SelectedItem.ToString(); NetTcpBinding binding = new NetTcpBinding(SecurityMode.None); binding.MaxReceivedMessageSize = int.MaxValue; EndpointAddress endpointAddress = new EndpointAddress("net.tcp://" + ip + ":8001/SQLServerService"); SQLServerServiceClient currentClient = new SQLServerServiceClient(binding, endpointAddress); return currentClient; }
5.结果
6.hololens测试:没问题
7.后续:1.界面修改,能够查询所有表。2.用EF
这就是一次简单的WCF的应用
相关文章推荐
- 使用WC“.NET研究”F实现SOA面向服务编程——简单的WCF开发实例
- 一起谈.NET技术,使用WCF实现SOA面向服务编程——简单的WCF开发实例
- 热门话题:使用WCF实现SOA面向服务编程(二)——实现简单的WCF开发实例
- EBS Form开发利用QUERY_FIND来实现最简单的查询功能(2)
- 使用WCF实现SOA面向服务编程——简单的WCF开发实例
- 使用W“.NET技术”CF实现SOA面向服务编程——简单的WCF开发实例
- EBS Form开发利用QUERY_FIND来实现最简单的查询功能
- 综合应用WPF/WCF/WF/LINQ之三十九:实现一个简单的DataGrid之获取某格的原始(或当前)行(或列)的Index
- PHP实现MVC开发得最简单的方法――模型
- 一个显示地图数据,并实现简单浏览查询程序源码(SDK编写)
- J2ME游戏开发中时钟的简单实现
- 用NUnit2.1简单实现.net的测试驱动开发(TDD)---转帖
- 简单实现多条件查询
- Lucene+Sen组合实现简单的查询引擎(日本语对应)
- J2ME游戏开发中时钟的简单实现
- 综合应用WPF/WCF/WF/LINQ之四十:实现一个简单的DataGrid之CheckBox已勾选的项的保存
- PB中用SetFilter和Filter实现简单的查询功能
- sql server的跨库查询(简单实现)
- 一个简单实现多条件查询的例子
- PHP实例:用PHP简单实现多条件查询