C# SQL表中的搜索结果
我需要在C中的SQL表中搜索valuefilename。如果它存在,则返回TRUE,如果不存在,则返回FALSE,并基于此继续我的代码 这就是我所拥有的,但它不起作用: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)
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执行它时,我无法让它工作。它被解决了。我用了你的第二种方法。谢谢你的帮助。