首页 > 解决方案 > 使用 C# 连接数据库

问题描述

我正在尝试从数据库中获取数据,并且一直收到下一个错误:

没有 se controló System.NullReferenceException HResult=-2147467261
Message=Referencia a objeto no establecida como instancia de un objeto。Source=ImeApps StackTrace: en ComunCD.getConexionIRATI() en C:\Desarrollo\VisualStudio2010\ImeApps\ImeApps\ComunCD.cs:línea 64 en EmpresasCD.getEmpresas() en C:\Desarrollo\VisualStudio2010\ImeApps\ImeApps\EmpresasCD.cs :línea 41 en ImeApps.Principal.abrirSeleccionEmpresaEspera() en C:\Desarrollo\VisualStudio2010\ImeApps\ImeApps\Principal.cs:línea 92 en ImeApps.Principal.abrirSeleccionEmpresa() en C:\Desarrollo\VisualStudio2010\ImeApps\ImeApps\Principal .cs:línea 82 en ImeApps.Principal.menuItem4_Click(Object sender, EventArgs e) en C:\Desarrollo\VisualStudio2010\ImeApps\ImeApps\Principal.cs:línea 77 en System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e) en System.Windows.Forms。

我正在做的是以下内容:

public class ComunCD
    {
    private static SqlConnection _sqlConnectionIRATI;

    public static void conectarBDIRATI()
        {
            _sqlConnectionIRATI = new SqlConnection(ConfigurationSettings.AppSettings["CONEXION_IRATI"].ToString());
            _sqlConnectionIRATI.Open();
        }

    public static SqlConnection getConexionIRATI()
    {
        if (_sqlConnectionIRATI == null)
        {
            //conectarBDIRATI();
        }
        if (_sqlConnectionIRATI.State != ConnectionState.Open) // HERE I GET THE ERROR
        {
            _sqlConnectionIRATI.Open();
        }
        return _sqlConnectionIRATI;
    }

我做错了什么?提前致谢!

标签: c#sqlconnection

解决方案


如果_sqlConnectionIRATInull你不应该测试State:添加else

    if (_sqlConnectionIRATI == null)
    {
        //conectarBDIRATI();
    }
    else if (_sqlConnectionIRATI.State != ConnectionState.Open) 
    {
        _sqlConnectionIRATI.Open();
    }

或者你应该创建一个实例:

    // If _sqlConnectionIRATI is null, we create it 
    if (_sqlConnectionIRATI == null)
      conectarBDIRATI();

    // _sqlConnectionIRATI is guaranteed to be not null: 
    if (_sqlConnectionIRATI.State != ConnectionState.Open)  
      _sqlConnectionIRATI.Open();

推荐阅读