我将此代码用于连接字符串:
namespace TransInsert
{
public partial class Form1: Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection con = new SqlConnection(@"Data Source=" + textBox1.Text + ";Initial Catalog=database;user ID=sa;Password=xxxx");
private void TextBox1.Text_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}
我将它放在IntializeCompoment下,我收到错误:
字段初始值设定项不能引用非静态字段,方法或属性' TransInsert.Form1.textBox1'
答案 0 :(得分:5)
您无法使用其他实例变量(con
)初始化实例变量(textBox1
)。
在许多情况下,将数据库连接的引用保存为实例变量甚至没有意义。由于连接池的原因,打开连接很便宜,您可以随时打开它,并在完成后关闭它,并且您将成为黄金。
当您需要从数据库中提取数据时,请执行以下操作:
void Foo()
{
using (var conn = new SqlConnection("..."))
{
conn.Open();
// then read about how to use ADO.NET
}
}
此外,请阅读using
块以及为什么这是一个好主意。
Bonus chatter:注入连接字符串,请务必检查用户输入,而不是盲目地将其合并到连接字符串中。
答案 1 :(得分:1)
你不能在事件外使用文本框设置连接字符串。你可以在form_load事件或button_click事件中使用连接字符串,如下所示
using System.Data.SqlClient;
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection con;
con = new SqlConnection(@"Data Source=" + textBox1.Text + ";Initial Catalog=DBName;user ID=sa;Password=yourpassword");
con.Open();
}