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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
云原生数据库 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
14天前
|
人工智能 前端开发 开发工具
解读.NET 技术的开发潜力
本文全面介绍了.NET技术在软件开发领域的核心优势、创新应用及面临的挑战。.NET以其统一的开发平台、强大的工具和跨平台能力,成为企业级应用、Web应用乃至游戏开发的理想选择。然而,在性能优化、容器化及AI集成等方面仍需不断突破。通过积极拥抱开源和社区驱动模式,.NET将持续推动软件开发的进步。
33 1
|
21天前
|
人工智能 前端开发 Devops
.NET技术自发布以来,在软件开发领域发挥了重要作用
【9月更文挑战第12天】.NET技术自发布以来,在软件开发领域发挥了重要作用。本文分为三部分探讨其在现代开发中的应用:首先介绍.NET的核心价值,包括语言多样性、强大的开发工具支持、丰富的类库、跨平台能力和活跃的社区;接着分析其在企业级应用、Web开发、移动应用、云服务及游戏开发中的实际应用;最后讨论.NET面临的挑战与未来趋势,如性能优化、容器化、AI集成及跨平台框架竞争等。通过不断的技术创新和社区驱动,.NET将持续推动软件开发的进步。
27 4
|
26天前
|
人工智能 开发框架 算法
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
|
26天前
|
传感器 应用服务中间件 Linux
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
|
26天前
|
人工智能 算法 C#
C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)
C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)
|
2月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
2月前
|
存储 NoSQL Redis
redis 6源码解析之 object
redis 6源码解析之 object
56 6
|
19天前
|
存储 缓存 Java
什么是线程池?从底层源码入手,深度解析线程池的工作原理
本文从底层源码入手,深度解析ThreadPoolExecutor底层源码,包括其核心字段、内部类和重要方法,另外对Executors工具类下的四种自带线程池源码进行解释。 阅读本文后,可以对线程池的工作原理、七大参数、生命周期、拒绝策略等内容拥有更深入的认识。
什么是线程池?从底层源码入手,深度解析线程池的工作原理
|
23天前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析
|
19天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
174 37
下一篇
无影云桌面