Ist screenshot of error Second Error screenshot
我的数据库正在接受针对表定义的空值。查看快照。可能吗?我将colums定义为非null并且它们可以取空值
我从asp.net表单输入数据,并在页面加载时将这些值定义为null。
e.g。 txtUser_id.Text =“”; 。 。
只存储那些未声明为null的值,请参见上面链接中的快照。
答案 0 :(得分:3)
左侧的星号表示它是一个尚未保存的新行,即根据表定义进行验证的时间。
答案 1 :(得分:1)
textbox.Text=""
不是空值。这是一个空字符串。将其插入sql server与Insert '' into...
第一条记录中的“null”值只是空字符串。如果您希望拒绝空字符串,请在C#端验证String.IsNullOrEmpty(txtUser_id.Text)
,或在SQL端对rtrim(ltrim([insertedValue]))
进行验证。
正如@StriplingWarrior所提到的,底线(所有空值)只是一个占位符,直到插入其他记录。
答案 2 :(得分:0)
在SQL Server Management Studio中“编辑”表时,视图底部始终显示一个显示NULL值的行。具有NULL值的此行实际上尚未存在于数据库表中。这就是为什么左侧有*
的原因。这是为了您的方便,以便您可以轻松插入值。输入值后,它将验证以确保在实际插入值之前列不为NULL。
如果您在表的第一行中引用 empty 值:empty与NULL不同。你没有任何约束来阻止零长度字符串进入这些列,这就是发生的事情。
答案 3 :(得分:0)
我建议不要使用任何'开放表'的GUI(我不知道确切的名称)。目前尚不清楚您的“数据库”是否接受NULL
值,或者这些列是否具有空字符串值。在“查询窗口”中执行以下查询以确定:
SELECT * FROM dbo.Student;
我还建议不要使用术语“快照”来引用更常用的“屏幕截图”,因为“快照”是SQL Server中一个非常具体的术语。 [我最初认为你发布了一个包含数据库快照而不是图像的文件!]
您的ASP.NET代码也可能正在传递空字符串,因为您的示例代码似乎表明了这一点。