2015年8月19日星期三

关于数据库对象的扩展属性 - FishParadise

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
关于数据库对象的扩展属性 - FishParadise  阅读原文»

今天有人问有没有办法查看表的注释,或查询所有表的注释。这里所说的表或表字段等的注释,其实是数据库对象的扩展属性。在MSSQL中,支持把一些注释性的内容放到数据库或数据库对象中,增强可读性,有助于日后的管理和维护工作。扩展属性的内容可以通过SSMS添加、修改或删除,也可以通过系统视图查询,通过执行相关的存储过程来维护。

创建一张测试表:

IF OBJECT_ID(N'T8') IS NOT NULL
BEGIN
DROP TABLE T8
END
GO

CREATE TABLE T8 (
id
INT NOT NULL,
name
NVARCHAR(20)
)
GO

code-1

添加表的扩展属性:在Object Explorer中找到新建的表,右键选择属性。

figure-1

点击扩展属性,即可进行添加、修改和删除。

figure-2

添加字段的扩展属性。

figure-3

字段属性——描述,添加注释内容。

figure-4

保存后,即可完成对字段扩展属性的添加。可通过系统视图sys.extended_properties进行查询。

SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties

code-2

从下图可看到,刚才在SSMS上添加的属性已经被查询出来。默认的扩展属性名是MS_Description。

figure-5

系统视图sys.extended_properties每个字段的详细说明,可查阅SQL联机从书。除了系统视图,也可以通过函数fn_listextendedproperty查询。

SELECT objtype, objname, name, value
FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', default, default);

SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', 'COLUMN', 'id');

SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', 'COLUMN', 'name');

code-3

figure-6

扩展属性可以使用相关的存储过程进行维护。再执行code-1的代码,重建测试表,相关的属性也会删除。执行存储过程sp_addextendedproperty 进行添加。存储过程的参数使用,请查阅文档,本文末尾提供链接。

EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = N'This is a table description on [T8](2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8'
GO

EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = N'This is a column description on (2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'id'
GO

EXEC sp_addextendedproperty ReactJS入门学习一 - 龙恩0707  阅读原文»

ReactJS入门学习一

阅读目录

React是什么?

React仅仅是VIEW层,而我们经常看到Angular是一个完整的框架,而React不是,因此我们看到他们两个的侧重点不一样,所以也不能比较的,React提供了模板语法及一些函数钩子用于HTML的渲染,只用于View层。

React的优点?

1. 虚拟DOM

  在DOM树的状态发生改变时,虚拟DOM机制会将前后DOM树进行对比,如果两个DOM树有不一样的地方,那么React仅仅会对那些不一样的区域来进行响应DOM修改,这也就是React的更高的性能是使用虚拟DOM来实现的。

2. 数据流

  React实现了单向响应的数据流,从而减少了重复的代码,这也是为什么比传统数据绑定更简单。

浏览器对React的支持程度:IE9- 以下的浏览器是不支持React.

下面我们来学习下React的基本使用方法吧!

首先React擅长于组件化页面,我们来看看使用React来如何渲染页面的,如下代码:

首先需要在页面上引入React.js

<script src="./build/react.min.js"></script>

HTML代码结构如下:

<div id="content"></div>

JS代码如下:

<script>
var CommentBox = React.createClass({
displayName:
'CommentBox',
render:
function(){
return (
React.createElement(
'div',{className:'commentBox'},"Hello,world!I am a CommentBox")
);
}
});
React.render(
React.createElement(CommentBox,
null),document.getElementById("content")
);
</script>

在页面上生成代码结构如下:

在IE9+ firefox chrome下生效;

我们下面来解释下上面的代码的含义:

React.createClass(): 该方法来创建一个新的React组件;其中最重要的方法是render,该方法返回一颗React组件树,这棵树将会渲染成HTML;

上面的div标签不是真实的DOM节点,他们是React div组件的实例,我们可以认为React是通过此来如何处理标记或者一些数据,React是安全的,它不生成HTML字符串,所以默认阻止了xSS的攻击;

React.render():该方法是 实例化根组件,启动框架,它有第二个参数,含义是:注入标记到原始的DOM元素中;

React 不依赖与Jquery,因此上面是通过 document.getElementById(“content”)来作为React.render()的第二个参数,当然我们也可以使用jqeury的方式来作为第二个参数调用,但是我们必须如下这样:$(“#content”)[0], 而不是 $(“#content”);

React如何制作组件?

如下我们有一个网站页面:首页分为如下几块,导航页,侧边栏,还有内容区;假如我现在想导航页,侧边栏和内容区都做成一个组件模块,因为有很多页面需要公用的;如下page页面结构图:

那么下面我们可以使用React.createClass()方法来创建一个react组件;如下代码:

导航页代码如下:我们使用JSX来写代码如下:(切记页面需要引入)

<script src="./build/react.min.js"></script>

<script src="./build/JSXTransformer2.js"></script>

这句代码;这是目前测试的,方便点直接引入;

<script type="text/jsx">
/* 导航模块代码 */
var NavMode = React.createClass({
render:
function(){
return (
<div className = "NavList">
Hello word
! I am a Nav List
</div>
);
}
});
/* 侧边栏模块代码 */
var SlideMode = React.createClass({
render:
function(){
return (
<div className="slideMode">hello world! I am a slide</div>
)
}
});
/* 内容区模块代码 */
var ContentMode = React.createClass({
render:
function(){
return (
<div className="contentMode">Hello world! I am comtent</div>
)
}
});
/* 页面div封装 上面三个模块 */
var page = React.createClass({
render:
function(){
return (
<div className="homepage">
<h1>page首页</h1>
<NavMode />
<SlideMode />
<ContentMode />
</div>
)
}
});
/*阅读更多内容

没有评论:

发表评论