我今天开始学习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中)...我还添加了数据源。我做了我以前做过的确切事情......但它不起作用:(
答案 0 :(得分:5)
错误正是它所说的。您不能在con
的初始化中使用da
,因为它只会在实例创建期间创建。您需要将con
创建为static
或将初始化行放在构造函数中。
HOWEVER ,你可能不应该在实践中这样做,因为你只是要求有人打开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();
}
}
答案 1 :(得分: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();
}
}
您无法在字段初始值设定项SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblArtikujt", con);
中访问con,因为它不是静态的。错误是自我解释的。问题不是SQL相关的,它与c#相关,我建议重新访问C#。
答案 2 :(得分: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();
}
答案 3 :(得分: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);
}
}
}
答案 4 :(得分: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();
}