2

今天开始学习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 中)......我还添加了数据源。我做了我以前做过的事情......但它不起作用:(

4

5 回答 5

5

错误正是它所说的。您不能con在初始化中使用它,da因为它只会在实例创建期间创建。您需要在构造函数中创建constatic放入初始化行。

但是,您可能不应该在实践中这样做,因为您只是要求某人打开 aSqlConnection并使其保持打开状态。您可能应该更多地使用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();  
    }
}

我会让你自己研究 using 块

于 2012-12-07T20:15:34.853 回答
0

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

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();    
            }
}

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

于 2012-12-07T20:14:34.400 回答
0

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

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();
}
于 2012-12-07T20:18:26.210 回答
0

SqlDataAdapter da = new 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);
     }  
}

}

于 2017-02-28T07:22:43.083 回答
0
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();
}
于 2017-03-05T11:05:56.203 回答