一起谈.NET技术,Silverlight与PostgreSQL数据库的互操作(CURD完全解析)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介:   今天将为大家介绍如何让Silverlight使用PostgreSQL作为后台数据库以及CURD操作。  准备工作   1)建立起测试项目   细节详情请见强大的DataGrid组件[2]_数据交互之ADO.NET Entity Framework——Silverlight学习笔记[10]。

  今天将为大家介绍如何让Silverlight使用PostgreSQL作为后台数据库以及CURD操作。

  准备工作 

  1)建立起测试项目 

  细节详情请见强大的DataGrid组件[2]_数据交互之ADO.NET Entity Framework——Silverlight学习笔记[10] 

  2)创建测试用数据库 

  使用pgAdmin III,按下图所示,创建一个名为employeesPostgreSQL数据库,建立数据表名称为Employee。(注意:处理数据库对象时,PostgreSQLPL/pgSQL语言具有区分大小写的内在属性数据表名和列名均需使用双引号包住,引用自链接)【我用的PostgreSQL数据库版本为8.3.7点击下载

  点击pgAdmin III工具栏上的“执行任意的SQL查询”[笔和纸的按钮],在弹出的窗口中输入如下SQL语句:

  
  
CREATE TABLE "Employee"
(
"EmployeeID"
integer NOT NULL DEFAULT nextval( ' employees_employeeid_seq ' ::regclass),
"EmployeeName"
character varying ( 45 ) NOT NULL ,
"EmployeeAge"
integer NOT NULL ,
CONSTRAINT employees_pkey PRIMARY KEY ("EmployeeID")
)
WITH (OIDS = FALSE);
ALTER TABLE "Employee" OWNER TO postgres;

 然后按“执行查询”按钮[绿色实心三角按钮]


  3)下载Npgsql

  为了能让.NET操作PostgreSQL数据库,请务必下载。【点击:下载

下载解压后,将bin文件夹中的全部内容复制到服务端项目文件夹下的bin文件夹中(之后,将该文件夹包含进来),便于管理引用。

  建立数据模型

EmployeeModel.cs文件(放置在服务端项目文件夹下)

  
  
using System;
using System.Collections.Generic;
using System.Linq;
namespace dataformpostgresqldb
{
public class EmployeeModel
{
public int EmployeeID { get ; set ; }
public string EmployeeName { get ; set ; }
public int EmployeeAge { get ; set ; }
}
}

 

  建立服务端Web Service

  右击服务端项目文件夹,选择Add->New Item....,按下图所示建立一个名为EmployeesInfoWebService.asmxWeb Service,作为SilverlightMySQL数据库互操作的桥梁。


  
 Silverlight客户端应用程序文件夹下,右击References文件夹,添加名为NpgSql的命名空间(如下图)。


  之后,双击
EmployeesInfoWebService.asmx打开该文件,将里面的内容修改如下:

  
  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using Npgsql; // 引入该命名空间是为了操作PostgreSQL数据库
namespace dataformpostgresqldb
{
/// <summary>
/// Summary description for EmployeesInfoWebService
/// </summary>
[WebService(Namespace
= " http://tempuri.org/ " )]
[WebServiceBinding(ConformsTo
= WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(
false )]
// To allow this Web Service to be called from script,
using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class EmployeesInfoWebService : System.Web.Services.WebService
{
[WebMethod]
// 获取雇员信息
public List < EmployeeModel > GetEmployeesInfo()
{
List
< EmployeeModel > returnedValue = new List < EmployeeModel > ();
NpgsqlCommand Cmd
= new NpgsqlCommand();
SQLExcute(
@" SELECT * FROM ""Employee"" ORDER BY ""EmployeeID"" ASC " , Cmd);
NpgsqlDataAdapter EmployeeAdapter
= new NpgsqlDataAdapter();
EmployeeAdapter.SelectCommand
= Cmd;
DataSet EmployeeDataSet
= new DataSet();
EmployeeAdapter.Fill(EmployeeDataSet);
foreach (DataRow dr in EmployeeDataSet.Tables[ 0 ].Rows)
{
EmployeeModel tmp
= new EmployeeModel();
tmp.EmployeeID
= Convert.ToInt32(dr[ 0 ]);
tmp.EmployeeName
= Convert.ToString(dr[ 1 ]);
tmp.EmployeeAge
= Convert.ToInt32(dr[ 2 ]);
returnedValue.Add(tmp);
}
r
eturn returnedValue;
}
[WebMethod]
// 添加雇员信息
public void Insert(List < EmployeeModel > employee)
{
employee.ForEach(x
=>
{
string CmdText = @" INSERT INTO "
"Employee""(""EmployeeName"",""EmployeeAge"")
VALUES('
" + x.EmployeeName + " ', " + x.EmployeeAge.ToString() + " ) " ;
SQLExcute(CmdText);
});
}
[WebMethod]
// 更新雇员信息
public void Update(List < EmployeeModel > employee)
{
employee.ForEach(x
=>
{
string CmdText = @" UPDATE ""Employee"
" SET ""EmployeeName""='
" + x.EmployeeName + @" ',""EmployeeAge""= "
+
x.EmployeeAge.ToString();
CmdText
+= @" WHERE ""EmployeeID""= " + x.EmployeeID.ToString();
SQLExcute(CmdText);
});
}
[WebMethod]
// 删除雇员信息
public void Delete(List < EmployeeModel > employee)
{
employee.ForEach(x
=>
{
string CmdText = @" DELETE FROM ""Employee"
" WHERE ""EmployeeID""=
" + x.EmployeeID.ToString();
SQLExcute(CmdText);
});
}
// 执行SQL命令文本,重载1
private void SQLExcute( string SQLCmd)
{
string ConnectionString =
" server=localhost;uid=postgres;pwd=yourpwd;database=employees " ;
NpgsqlConnection Conn
= new NpgsqlConnection(ConnectionString);
Conn.Open();
NpgsqlCommand Cmd
= new NpgsqlCommand();
Cmd.Connection
= Conn;
Cmd.CommandTimeout
= 15 ;
Cmd.CommandType
= System.Data.CommandType.Text;
Cmd.CommandText
= SQLCmd;
Cmd.ExecuteNonQuery();
Conn.Close();
}
// 执行SQL命令文本,重载2
private void SQLExcute( string SQLCmd, NpgsqlCommand Cmd)
{
string ConnectionString =
" server=localhost;uid=postgres;pwd=yourpwd;database=employees " ;
NpgsqlConnection Conn
= new NpgsqlConnection(ConnectionString);
Conn.Open();
Cmd.Connection
= Conn;
Cmd.CommandTimeout
= 15 ;
Cmd.CommandType
= System.Data.CommandType.Text;
Cmd.CommandText
= SQLCmd;
Cmd.ExecuteNonQuery();
}
}
}

  在Silverlight客户端应用程序文件夹下,右击References文件夹,选择菜单选项Add Service Reference...。如下图所示,引入刚才我们创建的Web Service(别忘了按Discover按钮进行查找)。


  创建Silverlight客户端应用程序

  详情参见我的[原创]SilverlightAccess数据库的互操作(CURD完全解析)

  最终效果图

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
110 3
|
1月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
180 3
|
3月前
|
SQL 开发框架 数据库
".NET开发者的超能力:AgileEAS.NET ORM带你穿越数据库的迷宫,让数据操作变得轻松又神奇!"
【8月更文挑战第16天】AgileEAS.NET是面向.NET平台的企业应用开发框架,核心功能包括数据关系映射(ORM),允许以面向对象方式操作数据库,无需编写复杂SQL。通过继承`AgileEAS.Data.Entity`创建实体类对应数据库表,利用ORM简化数据访问层编码。支持基本的CRUD操作及复杂查询如条件筛选、排序和分页,并可通过导航属性实现多表关联。此外,提供了事务管理功能确保数据一致性。AgileEAS.NET的ORM简化了数据库操作,提升了开发效率和代码可维护性。
53 5
|
10天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
1月前
|
测试技术 API 开发者
精通.NET单元测试:MSTest、xUnit、NUnit全面解析
【10月更文挑战第15天】本文介绍了.NET生态系统中最流行的三种单元测试框架:MSTest、xUnit和NUnit。通过示例代码展示了每种框架的基本用法和特点,帮助开发者根据项目需求和个人偏好选择合适的测试工具。
39 3
|
1月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
|
1月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:实现过程与关键细节解析an3.021-6232.com
随着互联网技术的快速发展,ASP.NET作为一种广泛使用的服务器端开发技术,其与数据库的交互操作成为了应用开发中的重要环节。本文将详细介绍在ASP.NET中如何连接SQL数据库,包括连接的基本概念、实现步骤、关键代码示例以及常见问题的解决方案。由于篇幅限制,本文不能保证达到完整的2000字,但会确保
|
2月前
|
监控 网络协议 API
.NET WebSocket 技术深入解析,你学会了吗?
【9月更文挑战第4天】WebSocket 作为一种全双工协议,凭借低延迟和高性能特点,成为实时应用的首选技术。.NET 框架提供了强大的 WebSocket 支持,使实时通信变得简单。本文介绍 WebSocket 的基本概念、.NET 中的使用方法及编程模型,并探讨其在实时聊天、监控、在线游戏和协同编辑等场景的应用,同时分享最佳实践,帮助开发者构建高效实时应用。
144 12
|
1月前
|
数据库
Admin.Net根据域名自动选择数据库
Admin.Net根据域名自动选择数据库
18 0
|
2月前
|
SQL 存储 关系型数据库
C#一分钟浅谈:使用 ADO.NET 进行数据库访问
【9月更文挑战第3天】在.NET开发中,与数据库交互至关重要。ADO.NET是Microsoft提供的用于访问关系型数据库的类库,包含连接数据库、执行SQL命令等功能。本文从基础入手,介绍如何使用ADO.NET进行数据库访问,并提供示例代码,同时讨论常见问题及其解决方案,如连接字符串错误、SQL注入风险和资源泄露等,帮助开发者更好地利用ADO.NET提升应用的安全性和稳定性。
268 6
下一篇
无影云桌面