postgresql数据库课程设计

烟草数据库

目录

一、设计意义... 3

二、系统功能需求分析... 3

2.1 系统功能分析... 3

2.2 数据库语义分析.. 5

2.3 实体与属性... 5

2.4 安全性控制... 6

三、数据库整体概念结构设计... 6

3.1 实体图... 6

3.2 实体关系 E-R 图.. 7

3.2.1 实体属性图... 8

3.2.2 实体联系图... 10

3.2.3 完整 E-R 图... 11

四、数据库整体逻辑结构设计... 11

4.1  逻辑转化... 11

4.2细化表结构... 12

4.3  关系模式分析... 14

五、数据库实施阶段... 14

5.1  创建数据库和基本表.. 14

5.2  插入数据... 18

5.3 建立触发器... 21

5.3.1.出售卷烟后,更改经销商库存的卷烟存量... 21

5.3.2. 经销商订购卷烟后,更改经销商和烟草局的卷烟存量... 22

5.4  建立视图... 22

5.4.1 用户视图... 23

5.4.2经销商视图... 23

5.5 建立用户和授权... 23

5.5.1建立消费者角色和授权... 23

5.5.2建立经销商角色和授权... 23

六、数据库系统界面应用... 23

6.1(登录界面). 23

七、课程设计总结... 25

八、贡献度... 25

附、C#源代码... 25

一、设计意

维新派与守旧派矛盾由来已久。维新派领袖丁真凭借电子烟科技与理塘地理因素对传统派大放阙词。①理塘海拔高,温度较低,​传统香​​不易燃烧。

②当地经济落后,一次性传统香烟易造成当地居民资金不足的问题。

③传统与变革碰撞,随着经济发展,电子烟越来越受到年轻人青睐。

④理塘海拔高 空气稀薄 传统香烟烟雾大 不易挥发 有损理塘形象大使形象。

 

为支持好哥们王源,为传统派扎起,设计简单的烟草数据库系统。

(烟草专卖是指国家对烟草专卖品的生产、销售和进出口业务实行垄断经营、统一管理的制度。----《中华人民共和国烟草专卖法》

烟草商品是一类重要商品,其为国家的经济及税收发展带来了重要利益,中国的卷烟市场是全世界最大的,全国总共有三亿多烟民,占世界总烟民的近三分之一,中国的烟叶生产量及成品烟销售量也是世界的三分之一左右。同时,中国在八个方面也有着世界第一的地位:烤烟种植面积第一,烤烟产量世界第一,烤烟增长速度世界第一,卷烟产销量世界第一,卷烟增长速度世界第一,吸烟人数世界第一,吸烟人数增加数量世界第一,烟税增长速度世界第一。在这种情况下,中国的卷烟消费量达3894.5万箱,国烟草行业年税收为国家的总税收的10%之多。

烟草制品受到国家管控,取得烟草专卖批发企业许可证的企业,应当在许可证规定的经营范围和地域范围内,从事烟草制品的批发业务。无烟草专卖批发企业许可证的单位或者个人,一次销售卷烟、雪茄烟50条以上的,视为无烟草专卖批发企业许可证从事烟草制品批发业务。

明确卷烟的流通数量可以避免倒卖卷烟,有利于烟草管控,我们小组在这次大作业的研究中制作了简单的烟草数据库系统。

本数据库系统结合 SQL 数据库设计和 C#界面编写,建立了一个模拟的简单烟草数据库系统,查询卷烟名称、经销商姓名、订单编号、派送人员编号、卷烟成本价、零售价等烟草系统基本信息。通过数据库可以实现查询烟草局的烟草储存信息与烟草价格信息,经销商处的出售情况信息,派送人员信息等功能。)

、系统功能需求分析

2.1 系统功能分析

(1)进入系统可查询烟草系统相关信息。

(2)实现触发功能:向订货订单表表中插入信息后,实现关联表烟草局卷烟总表、经销商烟草库存表的信息修改;向出售订单表表中插入信息后,实现关联表经销商烟草库存表的信息修改;

(3)完成数据库界面设计,可通过界面可视化交互,进行数据库相关操作, 查询相关信息等。

2.2 数据库语义分析

实体与实体间联系:

  1. 很多个经销商向烟草局订购烟草。一个烟草局卷烟总表有许多种类的卷烟对应着很多个经销商,所以烟草局卷烟总表中多种类的卷烟对应着多个经销商,关系为多对多。一个经销商会选购多个种类的卷烟,一个种类的卷烟会被多个经销商选购,所以经销商和卷烟之间的关系为多对多。所有的卷烟种类有部分被选购,所以烟草局的卷烟种类和订货订单时是多对多的关系。一个经销商会生成多个订单,一个订单对应一个经销商,所以经销商和订单是一对多的关系。

(烟草局卷烟:经销商:订货订单    m:1:n)

  1. 烟草卷烟总表指的是一个烟草局的烟草信息。一个烟草局会得到多份订货订单,所以是一对多的关系。(烟草局卷烟:订货订单     1:n)
  2. 一个的经销商会发出不同需求的订货订单。一个经销商对应着多份订货订单,所以是多对多的关系。(经销商:订货订单     1:n)
  3. 不同的配送人员会根据要求像不同的经销商进行配送,这其中一个配送人员可能会服务于多位经销商,一位经销商也可能需要多个配送人员服务,所以经销商表和配送人员表是多对多的关系。(经销商:配送人员     m:n)
  4. 每个经销商都会拥有经销商的多种类烟草的库存情况。所以经销商表和经销商烟草库存表是一对多的关系。(经销商:经销商烟草库存     1:n)
  5. 由经销商处的烟草库存,经销商会进行卷烟的出售,由此产生了多份出售订单,故经销商烟草库存表与出售订单表是一对多的关系。(经销商烟草库存:出售订单     1:n)

2.3 实体与属性

1. 系统共有 6 个实体

(1)   烟草局卷烟总表:  (卷烟名称,卷烟编号,卷烟存量,经销商进价,成本价,零售价)

(2)   经销商:  (经销商编号,经销商姓名,经销商电话,级别,可购买量)

(3)   出售订单:  (出售订单编号,卷烟编号,日期,购买量,出售人)

(4)   订货订单:  (订货订单编号,卷烟编号,日期,购买量,经销商编号)

(5)   配送人员:  (派送人员姓名,配送人员编号,工作状态,电话)

(6)   经销商库存:  (卷烟编号,卷烟名称,卷烟存量,经销商编号)

2.4 安全性控制

卷烟的销售由国家经营,所以卷烟价格统一管理。烟草局掌握成本价、经销商进价和售价。用户只能查看价格与经销商存量,经销商能查看售价和进价,以及插入出售订单和订货订单。

三、数据库整体概念结构设计

3.1 实体图

首先,先建立基本实体图,根据实体图以及各个实体之间的关系得到实体关系 E-R 图。各实体之间的联系为:

(1)  烟草局卷烟和经销商是一对多的关系。

(2)  烟草局卷烟和订货订单是一对多的关系。

(3)  经销商和订货订单是一对多的关系。

(4)  经销商和配送人员是多对多的关系。

(5)  经销商和经销商烟草库存是一对多的关系。

(6)  经销商烟草库存和出售订单是一对多的关系。

 

3.2 实体关系 E-R 图

根据之前分析的实体和实体之间的联系可得到如下的实体关系 E-R 图:

3.2.1 实体属性图

 

图 3-1 烟草局卷烟总表实体属性图

 

图 3-2 经销商实体属性图

 

图 3-3 出售订单实体属性图

 

图 3-4 订货订单实体属性图

 

图 3-5 配送人员实体属性图

 

图 3-6 经销商库存实体属性图

3.2.2 实体联系图

 

图 3-7 实体联系图

 

3.2.3 完整 E-R 图

图 3-8 完整 E-R 图

、数据库整体逻辑结构设计

4.1  逻辑转化

根据 3.2 节中的 E-R 图可以将系统中的概念模型转换为具体的表 (即关系) 结构,共分为 7 个关系 (关系就是给出关系名,属性就是实体属性,并标明该关 系的主键用下划线来表示) ,详细信息如下所示:

  1. 烟草局卷烟总表: (卷烟名称,卷烟编号,卷烟存量,经销商进价,成本价,零售价)
  2. 经销商: (经销商编号,经销商姓名,经销商电话,级别,可购买量)
  3. 出售订单: (出售订单编号卷烟编号,日期,购买量,出售人,经销商编号)
  4. 订货订单: (订货订单编号卷烟编号,日期,购买量,经销商编号)
  5. 配送人员: (派送人员姓名,配送人员编号,工作状态,电话)
  6. 配送: (人员编号,送烟日期,经销商编号订货订单编号卷烟编号)
  7. 经销商库存: (卷烟编号,卷烟名称,卷烟存量,经销商编号)

4.2细化表结构

根据上述文字描述,用英文简写为表名,实体图中的元素为列名, 并根据

实际需求来确定列的数据类型、数据最大宽度、必要的约束说明规则,为方便该烟草系统数据库在 SQL 中的建立,给出如下所示数据 库表的基本结构及说明

:烟草局卷烟表

列名

数据类型

长度

约束

说明

卷烟名称

CHAR

10

NOT NULL

卷烟编号

CHAR

4

PRIMARY KEY

卷烟存量

BIGINT

NOT NULL

经销商进价

FLOAT

5

NOT NULL

成本价

FLOAT

5

NOT NULL

零售价

FLOAT

5

NOT NULL

经销商表

列名

数据类型

长度

约束

说明

经销商编号

CHAR

4

PRIMARY KEY

经销商姓名

CHAR

6

NOT NULL

经销商电话

CHAR

11

NOT NULL

级别

INT

NOT NULL

可购买量

BIGINT

NOT NULL

出售订单表

列名

数据类型

长度

约束

说明

出售订单编号

CHAR

10

卷 烟 编 号 和出售订单编号共 同作为主码

卷烟编号

CHAR

10

卷 烟 编 号 和出售订单编号共 同作为主码

日期

DATE

NOT NULL

购买量

INT

NOT NULL

出售人

CHAR

6

经销商编号

CHAR

4

NOT NULL

订货订单表

列名

数据类型

长度

约束

说明

订货订单编号

CHAR

10

卷 烟 编 号 和订货订单编号共 同作为主码

卷烟编号

CHAR

10

卷 烟 编 号 和订货订单编号共 同作为主码

日期

DATE

NOT NULL

购买量

INT

小于 经销商可购买量

经销商编号

CHAR

4

FOREIGN KEY

派送人员表

列名

数据类型

长度

约束

说明

派送人员姓名

CHAR

6

NOT NULL

配送人员编号

CHAR

10

PRIMARY KEY

工作状态

INT

0 或 1

电话

CHAR

11

Not null

配送表

列名

数据类型

长度

约束

说明

人员编号

CHAR

10

FOREIGN KEY

送烟日期

DATE

NOT NULL

经销商编号

CHAR

4

FOREIGN KEY

订货订单编号

CHAR

10

FOREIGN KEY

除送烟日期外所有属性共同作为主码

卷烟编号

CHAR

10

FOREIGN KEY

经销商库存表

列名

数据类型

长度

约束

说明

卷烟编号

CHAR

4

卷 烟 编 号 和 经销 商 编 号 共 同作为主码

卷烟名称

CHAR

10

NOT NULL

卷烟存量

BIGINT

NOT NULL

经销商编号

CHAR

4

卷 烟 编 号 和 经销 商 编 号 共 同作为主码

4.3  关系模式分析

在设计数据库过程之中,有些关系模式存在插入,删除异常以及修改复杂数据冗余等问题,需要寻求解决这些问题的方法,所以我们要进行规范化处理,现在我们分析本数据库中关系模式的规范化程度。来判断是否需要进一步规范化处理。

1.对于关系模式烟草局卷烟库存(卷烟名称,卷烟编号,卷烟存量,经销商进价,成本价,零售价)

其中卷烟名称是一个候选码,卷烟编号是一个候选码,其他属性均完全函数依赖于任何一个候选码,且不存在传递依赖关系,同时卷烟名称完全函数依赖于卷烟编号,卷烟编号完全函数依赖于卷烟名称,所以是BC范式。

2.对于关系模式经销商表(经销商姓名,经销商编号,电话,级别,可购买量)

其中候选码为经销商姓名,经销商编号,其他属性均完全函数依赖于任何一个候选码,但是

级别可以决定可购买量存在传递依赖关系,所以是2范式。

3.对于关系模式出售订单表(   (出售订单编号,卷烟编号)    ,日期,购买量,出售人,经销商编号)

其中出售人依赖于出售订单编号,所以是1范式

4.对于关系模式订货订单表(   (订货订单编号,经销商编号)

其中订货订单编号和卷烟编号共同构成一个候选码,经销商编号依赖于订货订单编号所以存在部分函数依赖关系,所以是1范式。

5.对于关系模式派送人员表(派送人员姓名,派送人员编号,工作状态,电话)

其中派送人员姓名是一个候选码,派送人员编号是一个候选码,其他属性均完全函数依赖于任何一个候选码,且不存在函数依赖关系,同时派送人员姓名完全函数依赖于派送人员编号,派送人员编号完全依赖于派送人员姓名,所以是BC范式。

6.对于关系模式配送表(   (卷烟人员编号,经销商编号,订货订单编号,卷烟编号) ,送烟日期)

其中送烟日依赖于订货订单编号所以存在部分函数依赖关系所以是1范式。

7.对于关系模式经销商库存表(   (出售订单编号,经销商编号)    ,卷烟存量,卷烟名称)

其由于每个经销商的订单表编号互相可能存在重复问题,所以出售订单编号和经销商编号共同作为主码,于是本关系模式中出售订单编号和经销商编号共同构成一个候选码,且其他属性均完全函数依赖于这个候选码,同时卷烟名称与卷烟存量并不能互相决定即不存在传递函数依赖关系,且由于只有一个候选码所以是BC范式。

五、数据库实施阶段

5.1  创建数据库和基本表

1.建立数据库

CREATE database 烟草系统;

2.基本表的建立

(1).烟草局卷烟总表的建

CREATE table 烟草局卷烟总表

(

卷烟名称 char(10) NOT null,

   卷烟编号 char(4) PRIMARY KEY,

   卷烟存量 bigint NOT NULL,

   进销商进价 float(5) NOT NULL,

   成本价 float(5) NOT NULL,

   零售价 float(5) NOT NULL

);

(2).经销商表的建

CREATE table 经销商表

(

经销商编号 char(4) PRIMARY KEY,

经销商姓名 char(6) NOT NULL,

经销商电话 char(11) NOT NULL,

级别 int NOT NULL,

可购买量 bigint NOT NULL

);

(3).出售订单表的建

CREATE table 出售订单表

(

出售订单编号 char(10) not null,

   卷烟编号 char(10) NOT NULL,

   日期 date NOT NULL,

   购买量 int NOT NULL,

出售人 char(6),

   经销商编号 char(4) NOT NULL,

FOREIGN KEY(卷烟编号) references 烟草局卷烟总表(卷烟编号),

   primary key(出售订单编号,卷烟编号)

);

(4).订货订单表的建

CREATE table 订货订单表

(

 

订货订单编号 char(10) not null,

    卷烟编号 char(10) NOT NULL,

    日期 date NOT NULL,

    购买量 int NOT NULL,

经销商编号 char(4),

    primary key(订货订单编号,卷烟编号),

    FOREIGN KEY(经销商编号) references 经销商表(经销商编号));

(5)派送人员表的建立

CREATE table 派送人员表

(

派送人员姓名 char(6) NOT NULL,

   派送人员编号 char(10) PRIMARY KEY,

   工作状态 int,电话 char(11) NOT NULL

   );

(6)配送表的建立

CREATE table 配送表

(

派送人员编号 char(10) NOT NULL,

    送烟日期 date NOT NULL,

    经销商编号 char(4) NOT NULL,

    订货订单编号 char(10) NOT NULL,

    卷烟编号 char(10) NOT NULL,

    primary key(派送人员编号,订货订单编号,

FOREIGN KEY(派送人员编号) references 派送人员表(派送人员编号),

FOREIGN KEY(经销商编号) references 经销商表(经销商编号),

FOREIGN KEY(订货订单编号,卷烟编号) references 订货订单表(订货订单编号,卷烟编号)

);

(7)经销商库存表的建立

CREATE table 经销商库存表

(

卷烟编号 char(4),

    卷烟名称 char(10) NOT NULL,

    卷烟存量 BIGINT NOT NULL,

    经销商编号 char(4),

    PRIMARY KEY(卷烟编号,经销商编号)

);

5.2  插入数据

(1).烟草局卷烟总表的插入

INSERT INTO public."烟草局卷烟总表"(

"卷烟名称","卷烟编号","卷烟存量","进销商进价","成本价","零售价")

VALUES ('中华(金中支)',001,10000,800,680,850),('芙蓉王(细支硬蓝)',002,350,300,400),

('南京(炫赫门)',003,150,120,180),('红塔山(传奇)',004,140,130,150),

('云烟(黑金刚印象)',005,560,510,600);

(2). 派送人员表的插入

INSERT INTO public."派送人员表"(

"派送人员姓名","派送人员编号","工作状态","电话")

VALUES ('赵甲','001','0','17829302992'),

('钱乙','002','19293056378'),

('王丙','003','1','10938395610'),

('李丁','004','18940383039'),

('张戊','005','18947300934');

(3). 经销商表的插入

INSERT INTO public."经销商表"(

"经销商编号","经销商姓名","经销商电话","级别","可购买量")

VALUES

('0001','张三','13729302998','30000'),

('0002','李四','13456894345','2','50000'),

('0003','王五','10948494034','3','100000'),

('0004','赵六','18494038504','4','150000'),

('0005','吴七','18403054303','5','200000');

(4). 出售订单表的插入

INSERT INTO public."出售订单表"(

"出售订单编号","日期","购买量","出售人","经销商编号")

 VALUES('00001','2022-10-31','190','李刚','0001'),

('00002','2022-10-23','100','赵强','0002'),

('00003','2022-10-27','230','王武','0003');

(5). 订货订单表的插入

INSERT INTO public."订货订单表"(

"订货订单编号","经销商编号")

VALUES ('01','2022-8-25','2000',

      ('02','2022-8-23','500',

      ('03','2022-8-10','900',

      ('04','2022-8-11',

      ('05','200','0003'),

      ('06','2022-8-12',

      ('07','2022-7-31','300','0004'),

      ('08','2022-7-15',

      ('09','2022-8-26','800','0005'),

      ('10','2022-8-19','0005');

(6). 配送表的插入

INSERT INTO public."配送表"(

"派送人员编号","送烟日期","经销商编号","订货订单编号","卷烟编号")

VALUES

('001','2022-9-12','0001','01','1'),

('001','2022-9-10','02','2'),

('002','0002','03','3'),

('005','2022-9-21','04','4'),

('003','2022-9-20','0003','05','2022-8-31','06','2022-9-11','0004','07','2022-8-30','08','2022-9-29','0005','09',

('004','2022-9-30','10','4');

(7). 经销商库存表的插入

INSERT INTO public."经销商库存表"(

"卷烟编号","卷烟名称","经销商编号")

VALUES

('1','中华(金中支)',

('2','芙蓉王(细支硬蓝)','1000',

('3','南京(炫赫门)','3000',

('4','红塔山(传奇)',

('5','云烟(黑金刚印象)','4000',

('1','0005');

5.3 建立触发器

5.3.1.出售卷烟后,更改经销商库存的卷烟存量

create or replace function chushou_func()

returns trigger as

$$

begin

update 经销商库存表

set 卷烟存量=卷烟存量-new.购买量

where 卷烟编号=new.卷烟编号 and 经销商编号=new.经销商编号;

return null;

end

$$

language plpgsql;

create trigger teacher_fun after insert on 出售订单表

for each row execute procedure chushou_func();

 

(触发前数据)

 

(触发触发器)

 

(触发后数据)

5.3.2. 经销商订购卷烟后,更改经销商和烟草局的卷烟存量

create or replace function dingdan_func()

returns trigger as

$$

begin

update 经销商库存表

set 卷烟存量=卷烟存量+new.购买量

where 卷烟编号=new.卷烟编号 and 经销商编号=NEW.经销商编号;

update 烟草局卷烟总表

set 卷烟存量=卷烟存量-new.购买量

where 卷烟编号=new.卷烟编号;

return null;

end

$$

language plpgsql;

create trigger teacher_fun after insert on 订货订单表

for each row execute procedure dingdan_func();

5.4  建立视图

基于需求分析,用户只能查看价格与经销商存量,经销商能查看售价和进价,以及插入出售订单和订货订单。

5.4.1 用户视图

Create view userview as

(select 零售价,经销商库存表.卷烟名称,经销商库存表.卷烟存量,经销商姓名

 from 烟草局卷烟总表,经销商库存表,经销商表

where 烟草局卷烟总表.卷烟编号=经销商库存表.卷烟编号 and

 经销商库存表.经销商编号=经销商表.经销商编号

)

5.4.2经销商视图

Create view businessview (卷烟名称,零售价,进价,卷烟存量)

as

(select 卷烟名称,进销商进价,卷烟存量

 from 烟草局卷烟总表

)

5.5 建立用户和授权

烟草局账户拥有所有权限。

消费者用户只能查询烟草零售价和经销商库存

经销商用户只能插入订货订单表,出售订单表和查询烟草的进价,零售价。

5.5.1建立消费者角色和授权

CREATE ROLE USER1 with password '123456';

GRANT SELECT ON USERVIEW

TO USER1;

5.5.2建立经销商角色和授权

CREATE ROLE BUSINESS with password '123456';

GRANT SELECT ON BUSINESSVIEW

TO BUSINESS;

GRANT INSERT ON 出售订单表

TO BUSINESS;

GRANT INSERT ON 订货订单表

TO BUSINESS;

、数据库系统界面应用

对于上述过程建立的数据库,借鉴先前优秀案例的思想,我们建立了C#窗体 程。本程序可以直接运用于烟草信息收集和统计。

6.1(登录界面)

使用不同的账号和密码登录,所赋予的权限不一样,烟草局账户拥有所有权限,而用户账户只能查询烟草零售价和经销商库存,而经销商账户只能插入订货订单表,出售订单表和查询烟草的进价,零售价。

 

6.2(用户界面) 

 

使用Gridview获取数据表,在通过textbox控件输入字符串,再利用字符串的拼接实现sql语句的输入输出和查询插入删除更新功能,其中用了控件的visible属性实现登录界面于用户界面的交换。

、课程设计总结

八、贡献度

 

附、C#源代码

    private void button1_Click_1(object sender,EventArgs e)

        {

            try

            {

                string connStr = "server=localhost;username="+textBox2.Text+";password="+textBox3.Text+";database=sasx";

                //创建.NET和PostgreSQL之间的登录连接

                NpgsqlConnection connection = new NpgsqlConnection(connStr);

                //连接开启

                connection.Open();

                //SQL语句

                string commandStr = textBox1.Text;

                NpgsqlCommand thisCommand = new NpgsqlCommand(commandStr,connection);

                thisCommand.ExecuteNonQuery();

                string[] a = Regex.Split(commandStr," ",RegexOptions.IgnoreCase);

                if (a[0] == "select")

                {

                    NpgsqlDataAdapter objDataAdpter = new NpgsqlDataAdapter(); //构造数据操作对象

                    objDataAdpter.SelectCommand = new NpgsqlCommand(commandStr,connection); //构造命令对象

                    DataSet ds = new DataSet(); //构造数据集

                    objDataAdpter.Fill(ds,"表"); //取得全部数据

                    dataGridView1.DataSource = ds.Tables[0];

                }

                MessageBox.Show("执行成功!");

            }

            catch (Exception ee)

            {

                MessageBox.Show("执行失败!" + ee.ToString());

            }

        }//实现pgsql的连接,输入,输出

private void button3_Click(object sender,EventArgs e)

        {

           

            try

            {

                string connStr = "server=localhost;username=" + textBox2.Text + ";password="+textBox3.Text+";database=sasx";

                //创建.NET和PostgreSQL之间的登录连接

                NpgsqlConnection connection = new NpgsqlConnection(connStr);

                //连接开启

                connection.Open();

                int a = 1;

                if (a == 1)

                {

                    dataGridView1.Visible = true;

                    button1.Visible = true;

                    button2.Visible = true;

                    label3.Visible = true;

                    label4.Visible = true;      

                    textBox1.Visible = true;

                    button3.Visible = false;

                    textBox2.Visible = false;

                    textBox3.Visible = false;

                    label1.Visible = false;

                    label2.Visible = false;

                }

            }

            catch

            {

                MessageBox.Show("登录失败");

            }

        }

        private void button2_Click(object sender,EventArgs e)

        { 

                dataGridView1.Visible = false;

                button1.Visible = false;

                button2.Visible = false;

                label3.Visible = false;

                label4.Visible = false;

                textBox1.Visible = false;

                button3.Visible = true;

                textBox2.Visible = true;

                textBox3.Visible = true;

                label1.Visible = true;

                label2.Visible = true;

        }//实现登录界面和用户界面的交互,和账号密码登录的功能

原文地址:https://blog.csdn.net/qq_68123378/article/details/129287968

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,但是对于懂数据库却不熟悉Oracle的同学可能会有一定的障碍。正好在最近的一个项目中碰到了这样一个任务,于是研究了一下Oracle的数据导入导出,在这里跟大家分享一下。......_oracle 迁移方法 对比
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共700多人左右 1 + 2)。最近我们在使用MYSQL 8 的情况下(8.025)在数据库运行中出现一个问题 参数prefer_order_i..._mysql prefer_ordering_index
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才成功连上,在这分享一下我的经验,也仅仅是经验分享,有不足的地方欢迎大家在评论区补充交流。_navicat连接opengauss
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation。它是一种开放标准格式,将数据组织成中详述的键/值对和数组。_postgresql json
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgresql 注:navicat老版本可能报错。1.在springboot中引入我们需要的依赖以及相应版本。用代码生成器生成代码后,即可进行增删改查(略)安装好postgresql 略。更改配置信息(注释中有)_mybatisplus postgresql
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解析、修改、删除、更新、强制踢出数据库所有使用用户、连表更新与删除、获取今年第一天、获取近12个月的年月、锁表处理、系统表使用(查询所有表和字段及注释、查询表占用空间)、指定数据库查找模式search_path、postgre备份及还原_pgsql分组取每组第一条
文章浏览阅读3.3k次。上一篇我们学习了日志清理,日志清理虽然解决了日志膨胀的问题,但就无法再恢复检查点之前的一致性状态。因此,我们还需要日志归档,pg的日志归档原理和Oracle类似,不过归档命令需要自己配置。以下代码在postmaster.c除了开启归档外,还需要保证wal_level不能是MINIMAL状态(因为该状态下有些操作不会记录日志)。在db启动时,会同时检查archive_mode和wal_level。以下代码也在postmaster.c(PostmasterMain函数)。......_postgresql archive_mode
文章浏览阅读3k次。系统:ubuntu22.04.3目的:利用向日葵实现windows远程控制ubuntu。_csdn局域网桌面控制ubuntu
文章浏览阅读1.6k次。表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会造成查询变慢,可能分区是一种解决方案。一般建议当单表大小超过内存就可以考虑表分区了。1,继承式分区,分为触发器(trigger)和规则(rule)两种方式触发器的方式1)创建表CREATE TABLE "public"."track_info_trigger_partition" ( "id" serial, "object_type" int2 NOT NULL DEFAULT 0, "object_name..._pg数据表分区的实现
文章浏览阅读3.3k次。物联网平台开源的有几个,就我晓得的有、、thingskit、JetLink、DG-iot(还有其他开源的,欢迎在评论区留言哦!),然后重点分析了下ThingsBoard、ThingsPanel和JetLink,ThingsBoard和Jetlinks是工程师思维产品,可以更多的通过配置去实现开发的目的,ThingsPanel是业务人员思路产品,或者开发或者用,避免了复杂的配置带来的较高学习门槛。ThingsBoard和Jetlinks是Java技术体系的,ThingsPanel是PHP开发的。_jetlinks和thingsboard
文章浏览阅读3.8k次。PostgreSQL 数据类型转换_pgsql数字转字符串
文章浏览阅读7k次,点赞3次,收藏14次。在做数据统计页面时,总会遇到统计某段时间内,每天、每月、每年的数据视图(柱状图、折线图等)。这些统计数据一眼看过去也简单呀,不就是按照时间周期(天、月、年)对统计数据进行分个组就完了嘛?但是会有一个问题,简单的写个sql对周期分组,获取到的统计数据是缺失的,即没有数据的那天,整条记录也都没有了。如下图需求:以当前月份(2023年2月)为起点,往后倒推一年,查询之前一年里每个月的统计数据。可见图中的数据其实是缺少的,这条sql只查询到了有数据的月份(23年的1月、2月,22年的12月)_如何用一条sql查出按年按月按天的汇总
文章浏览阅读3.8k次,点赞66次,收藏51次。PostgreSQL全球开发小组与2022年10月13日,宣布发布PostgreSQL15,这是世界上最先进的开源数据库的最新版本_mysql8 postgresql15
文章浏览阅读1.3k次。上文介绍了磁盘管理器中VFD的实现原理,本篇将从上层角度讲解磁盘管理器的工作细节。_smgrrelationdata
文章浏览阅读1.1k次。PostgreSQL设置中文语言界面和局域网访问_postgressql汉化
文章浏览阅读4.2k次。PostgreSQL 修改数据存储路径_如何设置postgresql 数据目录
文章浏览阅读4.7k次。在项目中用到了多数据源,在连接postgres数据库时,项目启动报错,说数据库连接错误,说dual不存在,网上好多教程都是说数据库查询的时候的大小写问题,而这个仅仅是连接,咋鞥却处理方法是修改application-dev.yml中的配置文件.项目中的druid参数是这样的:确实在配置文件中有个查询语句。_relation "dual" does not exist
文章浏览阅读4.9k次。PostgreSQL是一款强大的关系型数据库,但在实际使用过程中,许多用户经常会遇到慢SQL的问题。这些问题不仅会降低数据库性能,还会直接影响业务流程和用户体验。因此,本文将会深入分析PostgreSQL慢SQL的原因和优化方案,帮助用户更好地利用这个优秀的数据库系统。无论你是初学者还是专业开发者,本文都将为你提供实用的技巧和方法,让你的PostgreSQL数据库始终保持高效快速。_postgresql数据库优化
文章浏览阅读1.6k次。Linux配置postgresql开机自启_linux 启动pgsql
文章浏览阅读2k次。本篇介绍如何在centos7系统搭建一个postgresql主备集群实现最近的HA(高可用)架构。后续更高级的HA模式都是基于这个最基本的主备搭建。_postgresql主备