繁体   English   中英

错误-字段初始值设定项无法引用非静态字段,方法或属性

[英]Error - A field initializer cannot reference the non-static field, method, or property

我今天开始学习C#编程中的SQL连接。 我尝试了一些基本的操作,例如插入,删除等。

我想在另一个项目中尝试同样的事情,但是我遇到了问题。 因为它显示了我无法解决的错误:(

错误:

字段初始化器无法引用非静态字段,方法或属性“ Artikujt.Form1.con”。

这是我的代码(我刚刚开始将其与SQL中的数据库连接)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Artikujt
{
    public partial class Form1 : Form
    {
        SqlConnection con = new SqlConnection(@"Data Source=TALY-PC;Initial Catalog=Katalogi;Integrated Security=True;Pooling=False");
        SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);
        DataSet dsl = new DataSet();    

        public Form1()
        {
            InitializeComponent();
        }    
    }
}

错误在此代码中的变量con

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);

我在SQL中(在Visual Studio中)创建了数据库。我还添加了数据源。 我做了我以前做的完全一样的事情....但是它不起作用:(

该错误正是它所说的。 不能使用con在初始化da ,因为它只会一个实例创建过程中被创建。 您将需要将con创建为static或将初始化行放入构造函数中。

但是 ,实际上,您可能不应该这样做,因为您只是在要求某人打开SqlConnection并将其保持打开状态。 您可能应该更多地使用using块来创建连接的实践,以利用处置模式

静态的:

public partial class Form1 : Form
{
    static SqlConnection con = new SqlConnection(@"Data Source=TALY-PC;Initial Catalog=Katalogi;Integrated Security=True;Pooling=False");
    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);
    DataSet dsl = new DataSet();    


    public Form1()
    {
        InitializeComponent();
    }

或在构造函数中实例化:

public partial class Form1 : Form
{
    SqlConnection con;
    SqlDataAdapter da;
    DataSet dsl;  

    public Form1()
    {
        InitializeComponent();
        con = new SqlConnection(@"Data Source=TALY-PC;Initial Catalog=Katalogi;Integrated Security=True;Pooling=False");
        da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);
        dsl = new DataSet();  
    }
}

我会让你自己研究使用块

您必须将初始化代码放入构造函数中:

public partial class Form1 : Form
{
            SqlConnection con = null; 
            SqlDataAdapter da = null; 
            DataSet dsl =  null;     


            public Form1()
            {
                InitializeComponent();
                con = new SqlConnection(@"Data Source=TALY-PC;Initial Catalog=Katalogi;Integrated Security=True;Pooling=False");
                 da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);
                dsl = new DataSet();    
            }
}

您不能在字段初始化程序SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);访问SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con); 因为它不是静态的。 该错误不言自明。 问题与SQL不相关,它与c#有关,建议重新访问C#。

您需要将此初始化移到构造函数中。

SqlConnection con;
SqlDataAdapter da;
DataSet dsl;

public Form1()
{
    InitializeComponent();

    con = new SqlConnection(@"Data Source=TALY-PC;Initial Catalog=Katalogi;Integrated Security=True;Pooling=False");
    da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con)
    dsl = new DataSet();
}

SqlDataAdapter da =新的SqlDataAdapter(“ SELECT * FROM tblArtikujt”,con); 在任何方法或事件内部使用,例如下面的示例按钮事件

       using System;
       using System.Collections.Generic;
       using System.ComponentModel;
       using System.Data;
       using System.Drawing;
       using System.Linq;
       using System.Text;
       using System.Windows.Forms;
       using System.Data.SqlClient;

    namespace Artikujt
    {
 public partial class Form1 : Form
  {
     SqlConnection con = new SqlConnection(@"Data Source=TALY-PC;Initial              Catalog=Katalogi;Integrated Security=True;Pooling=False");

    DataSet dsl = new DataSet();    

    public Form1()
    {
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);
        InitializeComponent();
    }  

   private void button1_Click(object sender, EventArgs e)
     { SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM    tblArtikujt",           con);
     }  
}

}

static SqlConnection con = new SqlConnection(@"Data Source=TALY-PC;Initial Catalog=Katalogi;Integrated Security=True;Pooling=False");
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);
DataSet dsl = new DataSet();

public Form1()
{
    InitializeComponent();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM