使用check约束性别字段输入正确汉字也提示错误

w_2015 2015-11-09 09:51:52
请大家帮我看下为什么会出错:
谢谢!
我是使用vs2015新建的一个asp.net窗体应用程序,使用listview控件绑定了数据表,这个表里有个性别字段,我想实现输入时只能输入男或女,输入其它字符不能新增记录。我在表设计器里给性别字段做了约束。要是把字段值设置为英文字母,可以实现,要是check约束设置值是'男'、'女',当我在浏览器里输入正确的值还是会报错。
下面是表设计器界面:

下面是浏览器操作数据界面:

下面是浏览器我输入正确值也弹出错误界面:
...全文
1103 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
还想懒够 2015-11-23
  • 打赏
  • 举报
回复
因为你的数据库默认排序方式是其他类型的 你在执行SQL语句的时候,在中文引号前加入N试试 如:性别=N'男' Or 性别=N'女'
w_2015 2015-11-23
  • 打赏
  • 举报
回复
按照jjkk168的方法可以实现输入中文了。谢谢jjkk168!
ls666ls 2021-07-05
  • 举报
回复
@w_2015 我也遇到这个问题了,咋解决的哥哥
w_2015 2015-11-21
  • 打赏
  • 举报
回复
还有人帮我看看吗?
w_2015 2015-11-18
  • 打赏
  • 举报
回复
不知道是不是编码的问题,导致check语句不支持汉字值。
正怒月神 版主 2015-11-17
  • 打赏
  • 举报
回复
这个还真的不清楚, 一般设计数据库,我用0/1来代表性别。 针对代码里,会有 枚举值来显示性别
w_2015 2015-11-15
  • 打赏
  • 举报
回复
我不写check语句的表设计:

这时可以正常输入数据:

我写check语句的表设计,其中id字段未设置自增,属性标识规范里显示false:

如果我不往id字段输入数字,会报错:

如果我全填好数值,性别字段又会报错:

lovebaby 2015-11-13
  • 打赏
  • 举报
回复
刚发现你的错误点好象是在ID上?ID设置自增了吗,如果设置自增了,就不要输入ID了。或者使用INSERT来插入数据试试。
w_2015 2015-11-13
  • 打赏
  • 举报
回复
我又改了数据类型,表设计如下图:

还是报错图片:
lovebaby 2015-11-12
  • 打赏
  • 举报
回复
这是我做的测试,check约束没有问题。

正怒月神 版主 2015-11-12
  • 打赏
  • 举报
回复
字段类型 改成 vnarchar(10)试试
w_2015 2015-11-10
  • 打赏
  • 举报
回复
手工输入数据也报错:

还有个问题,每次新打开这个项目,再在服务器资源管理器中找到这个表打开表设计器,我做的check约束语句中汉字值“男”、“女”就变成问号了。
lovebaby 2015-11-09
  • 打赏
  • 举报
回复
做了一个测试,你的check约束应该没有问题。为以防万一,你还是先打开数据表,手工输入测试数据,看是否正常。如果没有问题,那说明问题在你的程序部分。

CREATE TABLE [dbo].[test](
	[test] [nvarchar](50) NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[test]  WITH CHECK ADD  CONSTRAINT [CK_test] CHECK  ([test]='男' OR [test]='女')
GO

ALTER TABLE [dbo].[test] CHECK CONSTRAINT [CK_test]
GO
数据库应用系统设计与实现 实验类型:设计型 实验地点:2楼312 实验时间:12月14日、21日周五1-3/5-7节 实验内容: 系统概述: 某银行需要开发ATM存取款机系统实现如下功能: 1)开户(到银行填写开户申请单,卡号自动生成) 2)取款 3)存款 4)查询余额 题目要求: 一、建库、建表、建约束 1、使用SQL创建表 客户信息表userinfo 字段名称 说明 备注 customerID 顾客编号 自动编号(标识列),从1开始,主键 用序列sequence实现,用其属性:nextval customerName 开户名 必填 PID 身份证号 必填,智能是18位或15位,唯一约束 check约束length()函数 telephone 联系电话 必填,11位手机号 check约束,’[0-9]’ address 居住地址 银行卡信息表cardinfo 字段名称 说明 cardID 卡号 必填,主键,银行的卡号规则和电话好吗一样,一般前8位代表特殊含义,如某综合某支行等,假定该行要求其营业厅的卡号格式为10103576**** ***开始,每4位号码后有空格,卡号一般是随机产生。 curType 货币种类 必填,默认为RMB savingTate 存款类型 活期/定活两便/定期 openDate 开户日期 必填,默认为系统当前日期 openMoney 开户金额 必填,不低于1元 balance 余额 必填,不低于1元,否则将销户 pass 密码 必填,6位数字,开户时默认为6个“6” IsReportloss 是否挂失 必填,是/否值,默认为“否” customerID 顾客编号 外键,必填,表示该卡对应的顾客编号,一位顾客允许办理多张卡号 交易信息表transinfo 字段名称 说明 transDate 交易日期 必填,默认为系统当前日期 cardID 卡号 必填,外键 transType 交易类型 必填,只能是存入/支取 transMoney 交易金额 必填,大于0 remark 备注 可选,其他说明 2、使用SQL语言在每个表上添加约束 主键约束、外键约束CHECK约束、默认约束、非空约束 二、插入测试数据 使用SQL语言向每个表中插入至少3条记录 三、模拟常规业务 1)修改客户密码 2)办理银行卡挂失 3)统计银行资金流通余额和盈利结算 银行资金流通余额=总存入金额-总支取金额 盈利结算=总支取金额 * 0.008 – 总存入金额 * 0.003 4)查询本周开户的卡号,显示该卡相关信息 5)查询本月交易金额最高的卡号 6)查询挂失账号的客户信息 四、利用视图实现数据查询 1)为客户提供以下3个视图供其查询该客户数据 客户基本信息:vw_userInfo 银行卡信息:vw_cardInfo 银行卡交易信息:vw_transInfo 2)提供友好界面,要求各列名称为中文描述 3)调用创建的视图获得查询结果 五、用存储过程实现业务处理 1)完成开户业务 2)完成取款或存款业务 3)根据卡号打印对账单 4)查询、统计指定时间段内没有发生交易的账户信息

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧