问题1:
创建一个数据库myStudent,数据库中有个Users表,
users表中有个属性userId为自动增长,并且为主键。
现在的要求是userId输出的格式只能是这样的TX_******
*代表数字,在6位数字前面需要有TX_这个前缀
请问这种要怎么设置?
还有一个问题2:
在Linq中,怎么序列化users表中的各个属性。
问题一:
select 'TX_'+Cast(Userid as Nvarchar(6)) as 修改后主键 from [myStudent].dbo.[Users]
use master
go
if exists (select * from sysdatabases where name ='MyJT')
drop database MyJT
create database MyJT
On(
name='MyJT',
filename='d:\JT\data\MyJT.mdf')
log on(
name='MyJT_log',
filename='d:\JT\data\MyJT.ldf')
go
use MyJT
go
create table Users --用户表
(
UserId int identity(1,1) primary key ,--编号
NickName varchar(20) not null unique,--昵称
LoginPwd varchar(20) not null,--密码
)
select 'TX_'+Cast(UserId as Nvarchar(6)) as UserId from Users
这样还是不行。。。ID为1开始增长。没有想要的效果
主键ID 还是设为自增长1,自己再定义一个nvarchar字段 TX_00000001,在代码插入数据时 处理自动增长自己定义的字段
本人愚拙暂不理解。。。
首先有几个问题请解惑:
1:主键Id为自动增长,不是要为Int类型吗?为什么又可以定义nvarchar?
2:上文的再定义一个nvarchar类型是什么意思,是在定义主键Idint类型后,又定义一个主键ID为nvarchar类型吗?如果是这样不是冲突了吗?
3:就算定义了一个ID为nvarchar类型,为主键,自动增长,那么字段TX_00000001要怎么插入,主键加上自动增长不是不能插入数据吗?
谢谢!
@张涵哲琪: 主键就是一个ID。int型。这个字段不用。 自己建过一个普通字段(不是设成主键)用这个字段存储你想要的ID形式
第一个问题:邀月的正解
第二个问题:对USers表建立实体,或者将查询到的数据进行json转换
select 'TX_'+right('000000' + Cast(Userid as Nvarchar(6)),6) as nUserId from [myStudent].dbo.[Users]
//随机生成用户账号
private static string GetUserID()
{
string UserID = "TX_";
Random rd = new Random();
for (int i = 1; i <= 6; i++)
{
int userid = rd.Next(0, 9);
UserID = UserID + userid;
}
return UserID;
}