Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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
C# SQL表中的搜索结果_C#_Mysql_Sql_Sql Server_Tsql - Fatal编程技术网

C# SQL表中的搜索结果

C# SQL表中的搜索结果,c#,mysql,sql,sql-server,tsql,C#,Mysql,Sql,Sql Server,Tsql,我需要在C中的SQL表中搜索valuefilename。如果它存在,则返回TRUE,如果不存在,则返回FALSE,并基于此继续我的代码 这就是我所拥有的,但它不起作用: SqlCommand cmdName = new SqlCommand("SELECT CASE WHEN EXISTS (SELECT * FROM [dbo].[Document] WHERE FileName = @NewFileName) THEN CAST (1 AS BIT) ELSE CAST (0 AS BIT)

我需要在C中的SQL表中搜索valuefilename。如果它存在,则返回TRUE,如果不存在,则返回FALSE,并基于此继续我的代码

这就是我所拥有的,但它不起作用:

SqlCommand cmdName = new SqlCommand("SELECT CASE WHEN EXISTS (SELECT * FROM [dbo].[Document] WHERE FileName = @NewFileName) THEN CAST (1 AS BIT) ELSE CAST (0 AS BIT) )", con);
{
 cmdName.Parameters.AddWithValue("@NewFileName", NewFileName);
 cmdName.ExecuteNonQuery();
}
有什么建议吗


整个代码是为了防止用户将文件重命名为表中已经存在的文件。所以,如果有更好的方法,我会感谢你的帮助

您可以像下面这样使用,这简化了SQL查询

SqlCommand cmdName = new SqlCommand("SELECT 1 FROM [dbo].[Document] WHERE FileName = @NewFileName", con);
cmdName.Parameters.AddWithValue("@NewFileName", NewFileName);
var result =  cmdName.ExecuteScalar();
if(result != null)
{
      // implies data exist
}
或者你可以用这个

SqlCommand cmdName = new SqlCommand("SELECT 1 FROM [dbo].[Document] WHERE FileName = @NewFileName", con);
cmdName.Parameters.AddWithValue("@NewFileName", NewFileName);
SqlDataReader sdr = cmdName.ExecuteReader();
if (sdr.HasRows && sdr.Read())
{
          // implies data exist
}
//若您可以检查目录中是否存在物理文件,那个么就不需要DB调用。文件检查-System.IO.File.ExistsPathToFile

使用是最快的vay

string cmdText = @"IF EXISTS(SELECT 1 FROM [dbo].[Document] WHERE FileName = @NewFileName)
                   SELECT 1 ELSE SELECT 0"
SqlCommand cmdName = new SqlCommand(cmdText, con);
cmdName.Parameters.AddWithValue("@NewFileName", NewFileName);
int result = Convert.ToInt32(cmdName.ExecuteScalar());
if(result == 1)
   Console.WriteLine("File exists");

当然,您需要更改调用的方法。ExecuteOnQuery不适用于SELECT查询,因为返回值是由INSERT/DELETE/UPDATE等操作更改或修改的行数。相反,ExecuteScalar返回已执行查询第一行的第一列。

如果需要适当的帮助,应定义“不工作”。没有结果?查询抛出异常。。。请指定这是针对Sql Server还是MySQL原始查询:存在时选择大小写从[dbo]中选择*。[Document]其中FileName='SomeFileName'然后将1转换为位,否则将0转换为位。但当我试图从C执行它时,我无法让它工作。它被解决了。我用了你的第二种方法。谢谢你的帮助。