2016-09-30 38 views
-5

我使用的连接字符串验证码:为什么带有文本框的SqlConnection不起作用?

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下,我得到错误:

A field initializer cannot reference the non-static field, method, or property 'TransInsert.Form1.textBox1'

+0

可能是你在初始值或静态方法来实现此设置连接字符串。为我们提供更多的代码。 – MikkaRin

+0

这不会导致 –

+1

你是在完全错误的地方开始的。您正尝试在可能触发的任何方法或事件之外传递值,以便为连接字符串提供值。 –

回答

1

你不能使用event.you外文本框可以使用连接字符串中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(); 
    } 
+0

所以我在错误的地方运行我的SqlConnection非常感谢你! – user6894907

+0

很高兴帮助。不用谢! :) –

5

不能初始化实例变量(con)与另一个实例变量(textBox1)。

在很多情况下,将一个数据库连接的引用作为一个实例变量保持不了。由于连接池的关系,打开连接很便宜,您可以在需要时打开一个连接并在完成后关闭连接,这样您就会变成金色的。

做这样的事情,当你需要从数据库中提取数据:

void Foo() 
{ 
    using (var conn = new SqlConnection("...")) 
    { 
     conn.Open(); 

     // then read about how to use ADO.NET 
    } 
} 

另外,阅读有关using块,为什么它是一个好主意。

Bonus chatter:注入连接字符串是一件事情,一定要检查用户输入,而不是盲目地将它合并到连接字符串中。

+0

我想从组合框中选择哪个连接要打开 – user6894907

+0

@ user6894907然后您想确保控件不可编辑。 –