sql插入并检查输入值不为空

时间:2011-06-20 08:53:09

标签: mysql sql null

我有一个插入语句,它将插入文本框中的值。它工作正常现在我想通过使用SQL查询检查文本框不能为空。

我的插入声明是这样的:

INSERT INTO guestpasstypes(guestPasstype_Name)values('" + tbPassType.Text + "')"

4 个答案:

答案 0 :(得分:1)

使用您使用的任何语言从文本框中获取文本,以查看它是空还是空。大多数语言都有这些检查。 (例如:php; isempty())另外,如果你不想要空格,也可以使用trim。

答案 1 :(得分:1)

使guestPasstype_Name为NOT NULL并确保MySQL以SQL一致性模式运行。以下可能有效:

INSERT INTO guestpasstypes(guestPasstype_Name)values(
    IF('" + tbPassType.Text + "'='', NULL,'" + tbPassType.Text+"')"

答案 2 :(得分:1)

我也同意你应该避免调用那个SQL,因为可能存在注入攻击,但如果由于某种原因,你真的需要这样做,那么这应该可以解决问题:

"INSERT INTO guestpasstypes(guestPasstype_Name)
  select '" + tbPassType.Text + "' from dual where '" + tbPassType.Text + "' <> '';"

答案 3 :(得分:1)

我可以看到两种解决方案

  • 在生成sql查询(推荐)之前检查'tbPassType.Text'
  • 在'guestpasstypes'表中创建检查约束,如下所示:

    ALTER TABLE dbo.guestpasstypes ADD CONSTRAINT     CK_guestPasstype_Name CHECK((LEN(guestPasstype_Name))&gt;(0)))

(给出的例子是MSSQL,但我希望MySQL也有约束)