我想检索以下查询的结果值:
RESTORE LABELONLY FROM DISK = 'C:\folder\db-backup.bak';
在做了一些搜索之后我尝试了:
string connection = @"data source=.\SQLExpress;initial catalog=DB;persist security info=False;user id=sa;password=12356;MultipleActiveResultSets=True;App=EntityFramework";
ExecuteSQL(connection , @"RESTORE LABELONLY FROM DISK = 'C:\folder\db-backup.bak'");
并且,ExecuteSQL是:
private void ExecuteSQL(string ConnString, string sqlText)
{
string result = "";
using (SqlConnection sqlCon = new SqlConnection(ConnString))
{
sqlCon.Open();
using (SqlCommand sqlCom = sqlCon.CreateCommand())
{
sqlCom.CommandType = CommandType.Text;
sqlCom.CommandText = sqlText;
sqlCom.CommandTimeout = 0;
try
{
string str = Convert.ToString(sqlCom.ExecuteScalar());
}
catch (Exception e)
{
result = e.Message;
}
}
}
}
但是......总是空的!
SQL Server Management Studio中的查询结果为:
我想要的是如何检索MediaSetID字段?
答案 0 :(得分:2)
MSDN说明了RESTORE LABELONLY
操作:
结果集
RESTORE LABELONLY的结果集由一行组成 这个信息。
MediaName nvarchar(128)媒体名称。
...
因此,您必须使用ExecuteReader方法并处理返回的reader中的列(或将其加载到DataTable
并执行相同操作)。
答案 1 :(得分:1)
你应该使用ExecuteReader()
而不是像下面那样,因为你的命令返回非标量值。你可能得到空字符串导致RESTORE
命令的第一列值按照你发布的SSMS结果图像NULL
sqlCom.ExecuteReader()