Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定表中是否包含SQL中的值?_Java_Sql_Ms Access_Jdbc_Ms Access 2013 - Fatal编程技术网

Java 如何确定表中是否包含SQL中的值?

Java 如何确定表中是否包含SQL中的值?,java,sql,ms-access,jdbc,ms-access-2013,Java,Sql,Ms Access,Jdbc,Ms Access 2013,我觉得我在这里遗漏了一些非常明显的东西,但似乎唯一的方法是获取值,然后查看它是否返回null(空)值,我宁愿不这样做 SQL中是否有与List.contains(对象o)等效的对象?或者JDBC具有这种性质?如果是,是什么?多谢各位 编辑: 我正在使用Microsoft Access 2013 编辑2: 不幸的是,我没有任何有用的代码来显示,但这里是我试图做的要点。它一点也不独特。我想要一个方法(Java),它返回存储在数据库中的用户值。如果该用户以前未添加到数据库中,则应添加该用户,并应设置该

我觉得我在这里遗漏了一些非常明显的东西,但似乎唯一的方法是获取值,然后查看它是否返回null(空)值,我宁愿不这样做

SQL中是否有与List.contains(对象o)等效的对象?或者JDBC具有这种性质?如果是,是什么?多谢各位

编辑: 我正在使用Microsoft Access 2013

编辑2: 不幸的是,我没有任何有用的代码来显示,但这里是我试图做的要点。它一点也不独特。我想要一个方法(Java),它返回存储在数据库中的用户值。如果该用户以前未添加到数据库中,则应添加该用户,并应设置该用户的默认值。然后将返回这些新创建的值。如果一个播放器已经被添加到数据库中(用户名作为主键),我不想覆盖已经存在的数据

编辑3:
我已经解决了这个问题!请参阅下面的答案。

查看SQL表是否包含列上带有某些条件的行的唯一方法是实际执行SQL查询。我不明白你为什么不那样做。只需确保在将约束结果的列上有一个索引即可。此外,为了提高速度,请使用
count
防止从行中检索所有数据

SELECT count(*) FROM foos WHERE bar = 'baz'

假设您在
列上有一个索引,这个查询应该非常快,您所要做的就是检查它是否返回>0。如果有,则有符合条件的行。

您可以简单地使用带有条件的查询

例如,如果必须检查具有特定列的记录,可以使用
where
条件

select * from table where column1 = 'checkvalue'
您可以使用
count
属性检查指定条件下存在的记录数

select count(*) from table where column1 = 'checkvalue'
您可以使用“
IF EXISTS
”,它返回
布尔值
1
0

select
  if(
    exists( select * from date1 where current_date()>now() ),
    'today > now',
    'today is not > now' 
  ) as 'today > now ?' ;

+--------------------+
| today > now?       |
+--------------------+
| today is not > now |
+--------------------+
1 row in set (0.00 sec)
另一个例子

SELECT IF( 
         EXISTS( SELECT col from tbl where id='n' ),
         colX, colY 
       ) AS 'result'
FROM TBL;

我创建了以下方法,据我所知,该方法非常有效。(使用java.sql包)

这是一个非常简单和非常基本的方法,但希望它能在将来帮助别人。
如果有什么问题,请告诉我。我不希望任何人学习或使用写得不好的代码。

我也是sql新手,我正在使用Oracle

在Oracle中,假设我们有:TYPE:value

我们可以使用:

where value not in (select TYPE from table)
确保表的列类型中不存在值


不知道这是否有帮助。

有什么问题
从其中选择1=限制1?我想没有什么问题。我对SQL非常陌生,而且我已经习惯了那些具有处理该操作的预先存在的函数的类型,例如List.contains(Object o)。我总是可以用Java创建自己的方法来为我执行该操作。我总是尽可能地限制重复的代码,我会经常使用它。你能描述一下你希望代码做什么吗?假设您有一个查询,查询应该返回什么?我是SQL新手,我尝试做的并不是唯一的。如果以前从未使用过我的应用程序的人尝试使用数据库,则应添加他们,并将他们的用户名作为主键。如果已经添加了它们,则代码不应再次尝试将它们添加到数据库中。在JDBC中,您肯定应该将
PreparedStatement
与静态SQL结合使用,而不是使用来自用户的字符串来计算某个内容。否则,你可能会让sql注入的恶魔进来……如果这是一个愚蠢的问题,我很抱歉,但是我该如何使用JDBC来做这件事呢?@TacoManStan:检查我的另一个例子。我没有收到你的回复。特别是,我没有得到没有返回类型的方法签名。
where value not in (select TYPE from table)