Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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# 对象无法在Win7 x64上实例化_C#_Database_X86_64 Bit_Sqlconnection - Fatal编程技术网

C# 对象无法在Win7 x64上实例化

C# 对象无法在Win7 x64上实例化,c#,database,x86,64-bit,sqlconnection,C#,Database,X86,64 Bit,Sqlconnection,我已经搜索了很多次,但没有找到任何有用的东西,所以我来了 我已经用C#(任何CPU设置)编写了一个应用程序,它已经在Windows7和XPx86上运行了一段时间,没有出现错误 最近,我的办公室将我的工作站升级到Windows 7 x64(从x86) 当我在VisualStudio2010中运行我的应用程序时,我在运行或编译时没有收到任何错误。它按设计工作 根据我们的MSDN订阅,我的VS2010版本是10.0.30319.1 RTMRel,框架是4.0.30319 RTMRel 当我直接运行编译

我已经搜索了很多次,但没有找到任何有用的东西,所以我来了

我已经用C#(任何CPU设置)编写了一个应用程序,它已经在Windows7和XPx86上运行了一段时间,没有出现错误

最近,我的办公室将我的工作站升级到Windows 7 x64(从x86)

当我在VisualStudio2010中运行我的应用程序时,我在运行或编译时没有收到任何错误。它按设计工作

根据我们的MSDN订阅,我的VS2010版本是10.0.30319.1 RTMRel,框架是4.0.30319 RTMRel

当我直接运行编译后的应用程序时,使用SqlConnection对象时会收到一个错误。无论我选择任何CPU还是x86,都会出现相同的错误

在我的类文件中,这是例程:

        public static SqlConnection getDBConnection()
    {
        SqlConnection sqlConn = null;
        try
        {
            sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["KpH2Oprod"].ConnectionString);
            sqlConn.Open();
        }
        catch
        {
            throw;
        }
        finally
        {
            if (sqlConn == null)
            {
                sqlConn.Dispose();
            }
        }

        return sqlConn;
    }
一些手动跟踪发现错误不是在
SqlConnection sqlConn=null之后抛出的当它第一次实例化时,但当我实际在线设置它时:

sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["KpH2Oprod"].ConnectionString);
我已将此行更改为:

 sqlConn = new SqlConnection();
 sqlConn.ConnectionString = ConfigurationManager.ConnectionStrings["KpH2Oprod"].ConnectionString;
查看它是SqlConnection还是到Configuration manager,并且确实抛出了
sqlConn=new SqlConnection()行。事实上,这就是我开始的方式,并将其更改为以前的方式,不管怎样,在使用新指令时都会抛出错误

我收到的实际错误消息是(其中一些是我自己的消息):

我相信这可能与SQL对象的注册方式有关,但是消息在前几行(不是我做的)的中心被截断,这几行指向参数g为null。同样,这在调试器中也能完美地工作

RunTimeError : 
Value cannot be null.
Parameter name: g
at System.Guid..ctor(String g)
at kpH2O.frmMain..ctor() (mscorlib)

ACTION : 
UPDATEINCIDENT ()

PROGRESS : 
WORKING ()

RunTimeError : 
Object reference not set to an instance of an object.
at kpH2O.db.getDBConnection()
at kpH2O.db.getIncidentIDFromNumber(String incidentNumber)
at kpH2O.frmMain.updateHeatIncident() (kpH2O)

ERROR : 
Process UPDATEINCIDENT: FAILED (doStartUp)

这是一个开箱即用的VS2010安装,没有任何插件。非常感谢您的帮助。

为了验证功能,我将使用以下代码片段进行测试。您当前的代码在处理逻辑中有一个缺陷,这使事情变得复杂

string connectionString = ConfigurationManager.ConnectionStrings["KpH2Oprod"].ConnectionString;

using( SqlConnection sc = new SqlConnection( connectionString ) )
{
    sc.Open();
    // perform simple data access
}

如何在.config文件中为初学者定义连接字符串。。? 我需要看那么多

另外,我会像这样定义sqlConn

sqlConn = ConfigurationSettings.AppSettings["connectionString"]; //assuming this is what you named your connection string.. 
其次,我将使用Try-catch{},并将using(){}放在该Try中

如果您不想处理该sqlConn。。然后将其设为静态属性

公共静态SQLConnection sqlConn=null

那么如果你需要使用它。。如上所述,在using(){}中使用新构造。。
如果您想使用原始构造枚举连接字符串变量,也请查看此链接

是否有方法仅捕获原始异常/堆栈跟踪?此外,如果catch子句中只有throw语句,则没有任何好处。这里的情况与@DJKRAZE:连接字符串的情况相同这并不重要,因为他甚至在设置连接字符串属性之前就得到了异常。函数的要点是返回一个SqlConnection对象。返回已处理的对象将是无用的!加布,我想你是在开玩笑。他们所说的是他的代码的结构方式。他永远无法根据最初编写代码的方式返回有效的SQLConnection对象@在我看来,Tim做出了可能是迄今为止最好的推荐,也让我想知道他在标题中的using部分是什么样子的。他使用的是System.Data.SqlClient吗@Gabe-确切地说,我指出OPs当前代码将在finally块中抛出
NullReferenceException
,或者(如果更新以修复空检查)将在调用方可以使用连接之前处理连接。@DJKRAZE:OP的代码始终返回有效对象,但Win 7 x64上不在调试器下时除外(其中,
SqlConnection
构造函数抛出异常)。修复异常处理的方法是将其删除(因为当前它什么都不做)提议将使他的代码永远无法工作。很抱歉延迟回复。这已成为一个非问题。我的计算机崩溃了…两次…技术人员用Windows 7 32位重新安装了它,应用程序再次正常工作。听起来不错,但我想知道你是否有win7 64位的更新问题我只有一个问题。敲敲木头h VS2010/2008在我的wind 7 64位上,但安装了vs的更新,没有其他问题..很抱歉听到你的电脑一直崩溃。。