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、 の初期化では使用できません。asdaを作成するか、コンストラクターに初期化行を配置する必要があります。constatic

ただし、誰かに a を開いて開いたままにするように求めているだけなので、実際にはこれを行うべきではありませんSqlConnectionusing破棄パターンを利用するために、ブロックを使用して接続を作成する方法を実践する必要があります。

静的:

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

この初期化をコンストラクターに移動する必要があります。

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

コンストラクター内に初期化コードを配置する必要があります。

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

フィールド初期化子で con にアクセスすることはできませSqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);ん。静的ではないためです。エラーは一目瞭然です。問題は SQL 関連ではなく、C# 関連です。C# を再検討することをお勧めします。

于 2012-12-07T20:14:34.400 に答える