在WEB开发时。常常须要根据数据库表中的字段建立对应的输入控件,来获取输入的数据。每次都须要按字段来敲,显然太低效。并且easy出错。这里提供一个SQL脚本生成对应输入控件的方法。

USE DBDemo
DECLARE @TEMP_TABLE_NAME NVARCHAR(512)
DECLARE @WIDTH NVARCHAR(50) SET @TEMP_TABLE_NAME='Stuff'
SET @WIDTH='200' SELECT
'<f:'+TOKEN+' runat="server" ID="'+TOKEN+'_'+COLUMN_NAME+'" Label="'
--没有描写叙述的字段,使用COLUMN_NAME作为Label
+CAST(CASE
WHEN LEN(CAST(REMARK AS NVARCHAR(150)))<=0 THEN COLUMN_NAME
WHEN LEN(CAST(ISNULL(REMARK,'') AS NVARCHAR(150)))<=0 THEN COLUMN_NAME
ELSE REMARK
END
AS NVARCHAR(150)
)
+'" '+' Width="'+@WIDTH+'"'+'></f:'+TOKEN+'>' AS DATA --标记串
--,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TOKEN,EXTEND_STR,REMARK
FROM
(
SELECT
TEMP_SCHEMA_COLUMNS.TABLE_NAME ,--AS '表名',
TEMP_SCHEMA_COLUMNS.COLUMN_NAME ,--AS '列名',
TEMP_SCHEMA_COLUMNS.DATA_TYPE ,--AS '类型',
TEMP_EXTENDED_PROPERTIES.value AS REMARK ,--AS '描写叙述',
(
CASE
WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='int' THEN 'NumberBox'
WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='numeric' THEN 'NumberBox'
WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='smallint' THEN 'NumberBox'
WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='datetime' THEN 'DatePicker'
WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='bit' THEN 'CheckBox'
ELSE 'TextBox'
END
) AS TOKEN,--标记
(
CASE
WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='int' THEN 'DecimalPrecision="0"'
WHEN TEMP_SCHEMA_COLUMNS.DATA_TYPE='smallint' THEN 'DecimalPrecision="0"'
ELSE ''
END
) AS EXTEND_STR --特殊属性标记串
FROM
(
(
SELECT TEMP_TABLES.name AS table_name,
TEMP_COLUMNS.name AS column_name,
TEMP_COLUMNS.id AS table_id,
TEMP_COLUMNS.colid AS column_id FROM
(SELECT * FROM sysobjects WHERE type='U') AS TEMP_TABLES
INNER JOIN
(SELECT * FROM syscolumns ) AS TEMP_COLUMNS ON
TEMP_TABLES.id=TEMP_COLUMNS.id
) AS TEMP_TABLE_COLUMNS
INNER JOIN
(
select TABLE_NAME,COLUMN_NAME,DATA_TYPE from information_schema.columns
) AS TEMP_SCHEMA_COLUMNS
ON TEMP_SCHEMA_COLUMNS.TABLE_NAME=TEMP_TABLE_COLUMNS.table_name
AND
TEMP_SCHEMA_COLUMNS.COLUMN_NAME=TEMP_TABLE_COLUMNS.column_name
FULL JOIN
(
SELECT value,major_id,minor_id FROM sys.extended_properties
) AS TEMP_EXTENDED_PROPERTIES
ON TEMP_TABLE_COLUMNS.table_id=TEMP_EXTENDED_PROPERTIES.major_id
AND
TEMP_TABLE_COLUMNS.column_id=TEMP_EXTENDED_PROPERTIES.minor_id
)
WHERE TEMP_SCHEMA_COLUMNS.TABLE_NAME=@TEMP_TABLE_NAME
) AS TEMP_TABLE

说明:

1.DBDemo是数据库名称。依实际情况指定。

2.參数@TEMP_TABLE_NAME为相生成输入控件的数据库表名,依实际情况指定。

这里是Stuff。

3.參数@WIDTH为控件的宽度,依实际情况指定。

这里是200。

4.TOKEN为根据字段类型生成相应的标记。实际使用中。可能相应的标记不太准确。请依使用情况作出调整。

5.EXTEND_STR是特殊属性标记串。

这里对NumberBox控件中。为int和smallint限定小数位数为0.即DecimalPrecision="0"。

6.控件中的Label,以字段的描写叙述作为首选,假设没有字段描写叙述的。则使用字段名。

生成的标记例如以下图

Web页面中使用例如以下图

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHhkZGRhaWw=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

生成的效果图例如以下图

转载请注明出处http://blog.csdn.net/xxdddail/article/details/37877691

FineUI之使用SQL脚本从数据库表中生成对应的输入控件的更多相关文章

  1. [转]基于SQL脚本将数据库表及字段提取为C#中的类

    开发时,勉不了需要使用SQL直接与数据库交互,这时对于数据库中的表名及字段名会使用的比较多.如果每使用一次都复制一个,实在蛋疼.所以就考虑将其做成const常量.但是数据库中的表和字段相当多,一个一个 ...

  2. mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享

    原文地址:http://www.maomao365.com/?p=7335 摘要:    数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使用sql ...

  3. 我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令

    一.如果数据重要,请先备份数据 二.删除表中数据 SQL: Delete From ('表名')  如:Delete From abcd 三.执行新语句 SQL: dbcc checkident('表 ...

  4. PowerDesigner中SQL文件、数据库表反向生成PDM

    1      反向生成PDM 1)        创建一个空的PDM模型(选择相应的DBMS): 2)        选择[Database]--[Update Model from Database ...

  5. 使用SQL脚本创建数据库,操作主键、外键与各种约束(MS SQL Server)

    在实际开发中,可能很少人会手写sql脚本来操作数据库的种种.特别是微软的MS SQL Server数据库,它的SQL Server Management Studio对数据库的图形化操作极致简便,从而 ...

  6. PowerDesigner PDM生成sql脚本时:表的名称和表里面的字段名称都有引号解决。。。

    PowerDesigner PDM生成sql脚本时:表的名称和表里面的字段名称都有引号解决... 1.当你的PowerDesigner 是新安装时,你得设置可能就会出现一些问题,在这里比如:PDM生成 ...

  7. EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...

  8. SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据

    SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...

  9. SQL C# nvarchar类型转换为int类型 多表查询的问题,查询结果到新表,TXT数据读取到控件和数据库,生成在控件中的数据如何存到TXT文件中

    在数据库时候我设计了学生的分数为nvarchar(50),是为了在从TXT文件中读取数据插入到数据库表时候方便,但是在后期由于涉及到统计问题,比如求平均值等,需要int类型才可以,方法是:Conver ...

随机推荐

  1. mybatis generator 覆盖xml文件

    mybatis generator默认采用追加方式生成,所以我们如果要重新生成代码的时候那么要先删除原来的文件. 解决办法: 1:创建一个自定义补丁类. OverwriteXmlPlugin.java ...

  2. 小程序input自动聚焦拉起键盘

    微信官方提供了两种自动聚焦的方法 1,auto-focus 接受boolean值:默认为false:只需设置为true即可 自动聚焦,拉起键盘:不过官方的提示即将废弃,所以能不用还是不要用 2,foc ...

  3. vsftp虚拟用户方式访问

    需求:外部人员需要对公司服务器上某个文件夹内容进行读写操作 文件目录信息:/opt/abc drwxr-xr-x 9 www  www       4096 12月  4 13:02 abc   #注 ...

  4. eclipse之版本代号

  5. [Python3网络爬虫开发实战] 1.8.4-Scrapy-Redis的安装

    Scrapy-Redis是Scrapy的分布式扩展模块,有了它,我们就可以方便地实现Scrapy分布式爬虫的搭建.本节中,我们将介绍Scrapy-Redis的安装方式. 相关链接 GitHub:htt ...

  6. 你知道你常用的dos和linux命令吗?

    功能 Linux MS-DOS 进入到该目录 cd cd 列举文件 ls dir 创建目录 mkdir mkdir 清除屏幕 clear cls 复制文件 cp copy 移动文件 mv move 删 ...

  7. LINUX系统---初级相关操作和知识

    LINUX系统的初级,从安装LINUX开始,到处理简单的运维问题.搭建各种服务.解决网路问题.缓解服务器压力,写简单的shell脚本. 我们从基本的入门开始搞事情: 安装LINUX系统 对磁盘的使用 ...

  8. javascript中点击事件传入this的用法

    在script中有几种绑定事件的方法,有的在绑定函数中传入this参数,有的没有,那么,它们之间到底有什么区别呢? <!DOCTYPE html> <html lang=" ...

  9. poj2325 大数除法+贪心

    将输入的大数除以9 无法整除再除以 8,7,6,..2,如果可以整除就将除数记录,将商作为除数继续除9,8,...,3,2. 最后如果商为1 证明可以除尽 将被除过的数从小到大输出即可 #includ ...

  10. TCP传输的三次握手四次挥手策略

    为了准确无误地数据送达目标处,TCP协议采用了三次握手策略.用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达.握手中使用了TCP的标志:SYN和ACK 发 ...