Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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# 从c查询SQL Server 2008 R2中的master.sys.databases视图不起作用_C#_Sql Server_Master - Fatal编程技术网

C# 从c查询SQL Server 2008 R2中的master.sys.databases视图不起作用

C# 从c查询SQL Server 2008 R2中的master.sys.databases视图不起作用,c#,sql-server,master,C#,Sql Server,Master,我使用下面的代码查找数据库是否存在,但ExecuteOnQuery始终返回-1 我已经看到master.sys.databases视图,它有数据库POS ExecuteOnQuery使用的方法不正确。改用ExecuteReader:例如: var reader = command.ExecuteReader(); if (reader.Read()) .... ExecuteOnQuery使用的方法不正确。改用ExecuteReader:例如: var reader = command

我使用下面的代码查找数据库是否存在,但ExecuteOnQuery始终返回-1

我已经看到master.sys.databases视图,它有数据库POS

ExecuteOnQuery使用的方法不正确。改用ExecuteReader:例如:

var reader = command.ExecuteReader();
if (reader.Read())
    ....
ExecuteOnQuery使用的方法不正确。改用ExecuteReader:例如:

var reader = command.ExecuteReader();
if (reader.Read())
    ....
您应该使用ExecuteScalar并将查询更改为运行计数*

ExecuteScalar将返回受影响的行

ExecuteOnQuery将为SELECT返回-1。

您应该使用ExecuteScalar并将查询更改为运行计数*

ExecuteScalar将返回受影响的行

ExecuteOnQuery将为SELECT返回-1

你为什么在这里用反斜杠?数据库的名称为aspnetdb,因此应为:

sqlCheckDBQuery = "SELECT * FROM master.sys.databases where name = 'aspnetdb'";
正如在其他答案中提到的,您不能在这里使用,因为对于select语句,它将始终返回-1

你为什么在这里用反斜杠?数据库的名称为aspnetdb,因此应为:

sqlCheckDBQuery = "SELECT * FROM master.sys.databases where name = 'aspnetdb'";

正如在其他答案中提到的,您不能在这里使用,因为对于select语句,它将始终返回-1。

在这个特定实例中,您可以使用标量查询而不是数据读取器

sqlCheckDBQuery = "SELECT count(1) FROM master.sys.databases where name = 'aspnetdb'";
var count = (int)sqlCmd.ExecuteScalar();
databaseExists = count > 1;

在此特定实例中,您可以使用标量查询而不是数据读取器

sqlCheckDBQuery = "SELECT count(1) FROM master.sys.databases where name = 'aspnetdb'";
var count = (int)sqlCmd.ExecuteScalar();
databaseExists = count > 1;

但是is仍然返回0行,它应该返回1row@UzairFarooq从name=\'aspnetdb\'的master.sys.databases中删除SELECT*的反斜杠,这样它会从name='aspnetdb'但仍返回0行的master.sys.databases中读取SELECT*,它应该返回1row@UzairFarooq从name=\'aspnetdb\'的master.sys.databases中删除SELECT*的反斜杠,这样它就会从name='aspnetdb'+1 ExecuteScalar的master.sys.databases中读取SELECT*。我完全忘记了。+1 ExecuteScalar是这里的方式。我完全忘记了它。这就像一个符咒,但我想知道为什么SqlDataReader没有返回任何行我用ExecuteReader尝试了它。这就像一个符咒,但我想知道为什么SqlDataReader没有返回任何行我用ExecuteReader尝试了它