小编use*_*043的帖子

尝试附加数据库失败,因为它是版本782

我最近重新安装了Windows,并尝试使用现有数据库再次设置SQL Server.我已经尝试安装SQL Server 2012和2014,并不断得到相同的错误.该错误表明数据库是版本782,此版本的SQL Server仅与706及更低版本兼容.我在SQL Server 2012和2014都遇到了这个错误.我认为2014年与782+兼容.任何人都可以提供一些有关如何附加该死的数据库的指导吗?失意...

来自SQL Server 2014的图片..

而且需要注意的是,我在2012年遇到了同样的错误.在重新安装操作系统之前,一切都正常运行.

这是来自SQL Server 2014

sql-server

12
推荐指数
2
解决办法
7万
查看次数

最后在try/catch中阻塞不起作用?

好吧,据我所知,try/catch块尝试操作并捕获块捕获异常.更具体的异常排在最前面,对于一系列catch块的底部越通用.在下面的代码中,我实现了try/catch,一切正常.

据我所知,finally块始终执行.有些人认为最终阻止是没有目的的,因为如果有异常或者没有异常,那么最后一个catch块之后的代码无论如何都会被执行.

但是,反对这一点的论点是,如果在catch块中抛出异常,则没有后续的catch块来捕获该异常.因此,通过将资源清理代码放在finally块中,可以确保在catch块中抛出异常时释放资源.

这就是为什么以下代码让我困惑的原因.我在第一个catch块中抛出异常,finally块永远不会执行.为什么?

*请注意,创建myStreamReader时确实会抛出异常,因为该文件实际上称为generic.txt,并且有目的拼写错误,以便抛出初始异常.

StreamReader myStreamReader = null;

try
{
   myStreamReader = new StreamReader("c:\\genneric.txt");   
   Console.WriteLine(myStreadReader.ReadToEnd());       
}

catch(FileNotFoundException Error)
{
   Console.WriteLine(Error.Message);
   Console.WriteLine(); 
   throw new Exception();
}

catch(Exception Error)
{
   Console.WriteLine(Error.Message);
   Console.WriteLine();
}

finally
{

  if(myStreamReader != null)
  {
    myStreamReader.Close();
  }

  Console.WriteLine("Closed the StreamReader.");
}
Run Code Online (Sandbox Code Playgroud)

视频:

这段代码的问题源于此视频,时间为27:20:

https://www.youtube.com/watch?v=WxdSb3ZCWYc&list=PLAC325451207E3105&index=41

该人直接声明在catch块中发生的异常不会阻止finally块执行.我看到它确实如此.

c# oop exception-handling exception

5
推荐指数
1
解决办法
1617
查看次数

NVarChar 到 C# 数据类型

数据库存储 nvarchar,我检索信息,我想将它塞入 C# 数据类型,而无需任何声明性转换代码。

您可以将 nvarchar 隐式转换为 C# 数据类型吗?(例如 nvarchar 到 int)

c# sql asp.net

4
推荐指数
1
解决办法
2万
查看次数

在什么实际情况下你想要一个只写属性?

您何时想要创建一个具有只写属性但您无法读取的属性的对象?显然反向(只读)在许多情况下都很有用,但是有人可以给我一个只写属性的例子吗?什么时候有用呢?

c# object

3
推荐指数
1
解决办法
122
查看次数

"安全"动态演员?

我熟悉如何在C++中进行动态强制转换,如下所示:

myPointer = dynamic_cast<Pointer*>(anotherPointer);
Run Code Online (Sandbox Code Playgroud)

但是你如何使这成为一个"安全"的动态演员呢?

c++ oop casting

3
推荐指数
1
解决办法
952
查看次数

列表容量属性意外增加..为什么?

我创建一个说明客户对象的列表,初始大小为0.

List<Customer> firstCustomerList = new List<Customer>();
Run Code Online (Sandbox Code Playgroud)

List的Outputted Capacity属性为0.

我将一个客户添加到列表中..

firstCustomerList.Add(customer1);
Run Code Online (Sandbox Code Playgroud)

现在,List的输出Capacity属性是4.

Customer对象确实只是一个对象,不是另一个List.更重要的是,如果我添加3个Customer对象,然后将TrimExcess()方法应用于List,它会将List缩小到正确的大小.

那么为什么只添加一个对象就可以将List的容量提高到4?

c# list

2
推荐指数
1
解决办法
51
查看次数

一旦获得/设置逻辑,是否需要创建私有后备变量?

如果您在C#,AFIK中创建属性,如果您只是使用get/set,则不需要私有后备变量,利用C#3.0自动实现的属性:

...
public int Age {get;set;}
Run Code Online (Sandbox Code Playgroud)

但是,假设您想在Age属性中添加一些逻辑,并让它接受仅大于18的值.此时,是否有必要创建一个私有变量?有办法吗?

c# properties c#-3.0

0
推荐指数
1
解决办法
253
查看次数