最近做一个电子签核程序,里面涉及到方方面面,特做一个小结.
此文会不段更新中......
一.数据库方面(sql server)
这次数据设计用了Sysbase公司的PowerDesigner12,感觉很爽,基本上来说,数据库设计好了,程序也就好做了,不过在这之前如果能画好流程图,对数据库设计帮助也很大.考虑到时间各方面因素,这次没做那么详细.
有几个小东西,放在这里,防止以后忘记:
2.双击表,出现column列表,双击要设置的列的左边的灰色框,应该会弹出新的窗口,然后在新窗口上选择standard checks ,里面有default的.
3.打开PDM后,点菜单Database->Generate Database
在随后出现的界面里面有个Generation选项,选择ODBC Generation,就可以直接创建数据库.
SQL 字符串分割函数
returns @temp table(a varchar(100))
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end
SQL根据数组标识添加多条记录的例子
DECLARE @RoleID varchar(2000)
SET @UserID='1'
SET @RoleID='445,33,43554,55,556,'
DELETE FROM userole WHERE userid=@UserID
SET @RoleID=stuff(@RoleID,len(@RoleID),1,'')
set @RoleID=@RoleID+','
DECLARE @strSQL nvarchar(2000)
while charindex(',',@RoleID)>0
begin
select @strSQL=left(@RoleID,charindex(',',@RoleID)-1)
print('INSERT INTO userole(userid,roleid)VALUES('''+@UserID+''','''+@strSQL+''')')
set @RoleID=stuff(@RoleID,1,charindex(',',@RoleID),'')
end
返回主键ID:return @@identity,时间转换函数:CONVERT(varchar(10),GETDATE(),112)+CAST(datepart(ms,getdate()) as varchar(20))
语法:
Syntax for CAST:
CAST ( expression AS data_type [ (length ) ])
Syntax for CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
不带世纪数位 (yy) (1) | 带世纪数位 (yyyy) | 标准 | 输入/输出 (3) |
---|---|---|---|
- |
0 或 100 (1, 2) |
默认设置 |
mon dd yyyy hh:miAM(或 PM) |
1 |
101 |
美国 |
mm/dd/yyyy |
2 |
102 |
ANSI |
yy.mm.dd |
3 |
103 |
英国/法国 |
dd/mm/yy |
4 |
104 |
德国 |
dd.mm.yy |
5 |
105 |
意大利 |
dd-mm-yy |
6 |
106 (1) |
- |
dd mon yy |
7 |
107 (1) |
- |
mon dd, yy |
8 |
108 |
- |
hh:mm:ss |
- |
9 或 109 (1, 2) |
默认设置 + 毫秒 |
mon dd yyyy hh:mi:ss:mmmAM(或 PM) |
10 |
110 |
美国 |
mm-dd-yy |
11 |
111 |
日本 |
yy/mm/dd |
12 |
112 |
ISO |
yymmdd |
- |
13 或 113 (1, 2) |
欧洲默认设置 + 毫秒 |
dd mon yyyy hh:mm:ss:mmm(24h) |
14 |
114 |
- |
hh:mi:ss:mmm(24h) |
- |
20 或 120 (2) |
ODBC 规范 |
yyyy-mm-dd hh:mi:ss(24h) |
- |
21 或 121 (2) |
ODBC 规范(带毫秒) |
yyyy-mm-dd hh:mi:ss.mmm(24h) |
- |
126 (4) |
ISO8601 |
yyyy-mm-ddThh:mm:ss.mmm(无空格) |
127(6) |
带时区 Z 的 ISO8601。 |
yyyy-mm-ddThh:mm:ss.mmmZ (无空格) |
|
- |
130 (1, 2) |
回历 (5) |
dd mon yyyy hh:mi:ss:mmmAM |
- |
131 (2) |
回历 (5) |
dd/mm/yy hh:mi:ss:mmmAM |
Procedure:
create table #tmp(id int identity(1,1),ad_time datetime default getdate())
set nocount off
SQL Server 2005 的版本对应的版本号
SELECT SERVERPROPERTY('ProductVersion')
9.00.1399
SQL Server 2005(初始版本)
9.00.2047
SQL Server 2005 SP1
9.00.3042
SQL Server 2005 SP2
----------------------------------------------------------------------------------------
更改标识值:
修改为从0开始
DBCC CHECKIDENT (table, RESEED, 0)
查看
DBCC CHECKIDENT (users, NORESEED)
----------------------------------------------------------------------------------------
CASE用法:
CASE input_expression WHEN when_expression THEN result_expression [...n ][ELSE else_result_expression ] END
一个TRANSACTION
Author:Jin
Time:2007/03/01
Note:个人基本信息修改
*/
ALTER PROCEDURE [dbo].[SP_ModifyUserMsg]
(
@strNewPassWord nvarchar(100),
@strNewPassWord2 nvarchar(100),
@msgerror nvarchar(100) OUTPUT)
AS
declare @errid int
SET NOCOUNT ON
BEGIN TRANSACTION
if(@strblchge=1)
if (@strNewPassWord<>@strNewPassWord2)
begin
SELECT @msgerror='两次新密码输入不一致',@errid=99
GOTO Error_Handle
end
SET NOCOUNT OFF
COMMIT TRANSACTION
RETURN(0)
Error_Handle:
SET NOCOUNT OFF
ROLLBACK TRANSACTION
RETURN(@errid)
二.程序方面(c#)
根据PDM文件,直接开始程序制作.如果做好类图就更好了,同上,各方面因素没做那么详细.