2013-12-08 253 views
0

我試過一百萬種不同的方法來實現這一點,但沒有發現任何工作。向下滾動到底部。 (注,這是使用SQL Server數據庫一個登錄表單)SQL Server連接字符串錯誤

DatabaseConnection.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace AllIn1Database 
{ 
    class DatabaseConnection 
    { 
     private string sql_string; 
     private string strCon; 
     System.Data.SqlClient.SqlDataAdapter da_1; 
     public string Sql 
     { 
      set 
      { 
       sql_string = value; 
      } 
     } 
     public string connection_string 
     { 
      set { strCon = value; } 
     } 
     public System.Data.DataSet GetConnection 
     { 
      get { return MyDataSet(); } 
     } 
     private System.Data.DataSet MyDataSet() 
     { 
      System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon); 
      con.Open(); 
      da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con); 
      System.Data.DataSet dat_set = new System.Data.DataSet(); 
      da_1.Fill(dat_set, "Table_Data_1"); 
      con.Close(); 
      return dat_set; 
     } 
    } 
} 

Form1.cs中:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Data.Sql; 
using System.Data.SqlClient; 
using System.Data.SqlTypes; 

namespace AllIn1Database 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     DatabaseConnection objConnect; 
     string conString; 
     DataSet ds; 
     SqlConnection con = new SqlConnection(); 

     private void tnLogin_Click(object sender, EventArgs e) 
     { 
      try{ 
       System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(); 
       con.Open(); 
       String cmp = "SELECT ISNULL(stUsername, '') AS stUsername, ISNULL(stPassword,'') AS stPassword, ISNULL(stRole,'') AS stRole FROM LoginDetails WHERE stUsername='" + txtUname.Text + "' and stPassword='" + txtPass.Text + "'"; 
      SqlCommand cmd = new SqlCommand(cmp, con); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
       SqlDataReader dr = cmd.ExecuteReader(); 
      while (dr.Read()) 
       { 
       string userText = txtUname.Text; 
       string passText = txtPass.Text; 
         if (this.CompareStrings(dr["Name"].ToString(), userText) && 
         this.CompareStrings(dr["Password"].ToString(), passText)){ 
          MessageBox.Show("Logged on as" + txtUname.Text); 
     } 
         else 
         { 
          MessageBox.Show("Invalid Logon Details."); 
         } 
         dr.Close(); 
         con.Close(); 
      } 
      } 
       catch (Exception err) { 
        MessageBox.Show(err.Message); 
       } 
      } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      try 
      { 
       objConnect = new DatabaseConnection(); 
       conString = Properties.Settings.Default.DatabaseConnectionString; 
       objConnect.connection_string = conString; 
       objConnect.Sql = Properties.Settings.Default.SQL; 
       ds = objConnect.GetConnection; 
      } 
      catch (Exception err) 
      { 
       MessageBox.Show(err.Message); 
      } 
     } 

     private bool CompareStrings(string string1, string string2) 
     { 
      return String.Compare(string1, string2, true, System.Globalization.CultureInfo.InvariantCulture) == 0 ? true : false; 
     } 
    } 
} 

在線路中發生錯誤

System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon); 

錯誤說

strCon在此上下文中不存在。

我該如何成功連接而不會拋出此錯誤?

+1

什麼價值'strCon'在你的情況下?另外:你應該使用**參數化查詢**來避免SQL注入攻擊,你應該將NOT SQL語句連接在一起作爲字符串! –

+0

數據庫連接字符串。 public string connection_string { set {strCon = value; } } – user3079557

+0

是不是constring而不是strCon你應該使用?你沒有在你的整個代碼中定義strcon –

回答

0

您沒有一個連接字符串/沒有帶給出STRCON一個值,你需要做的是這樣的:

strCon = "myConnectionString"; 

找出連接字符串是什麼,你可以使用這個網站:

http://www.connectionstrings.com/

1

你實例沒有ConnectionString的連接。而且我沒有看到你的行之後設置它:

System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(); 

假設你的連接字符串是Properties.Settings.Default.DatabaseConnectionString,你會做這樣的事情:

System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(Properties.Settings.Default.DatabaseConnectionString); 
+0

這似乎工作。謝謝凱沙皇! :d – user3079557