2016-06-20 40 views
0

我很難弄清楚這一點,我想把我發送的名稱與方法作爲我試圖創建的新類變量的名稱。這是我現在擁有的。字符串作爲新類變量的名稱

public void GetDier(string naam) 
{ 
    string query = "SELECT * FROM [Dieren] WHERE Diersoort = '" + naam + "'"; 
    sqlconn.Open(); 
    SqlCommand cmd = new SqlCommand(query, sqlconn); 
    SqlDataReader DR = cmd.ExecuteReader(); 
    string diernaam = DR.GetString(1); 
    int currency = DR.GetInt32(2); 
    int TPnodig = DR.GetInt32(3); 
    Dieren naam = new Dieren(diernaam, TPnodig, currency); 
} 

我想讓字符串naam,作爲我試圖在上面的代碼段中執行的新代理的新名稱。

+3

不要使用字符串連接構建SQL查詢。 –

回答

0

您不能將變量用作另一個變量的名稱。說實話,這沒有意義。變量的名稱只對程序員有用,而不是代碼的最終結果。

另請注意,您的SQL易受SQL注入攻擊。始終使用參數化查詢!

+0

問題是我想拿出我的Dieren表中的每一個Dier,並將它們添加到課程中。這是我能想到的唯一方式,你可能有另一種解決方案嗎? – RensvDijck

+0

所以你想把它們填入列表或字典中? –

+0

然後在列表中。 – RensvDijck

1

這裏有一個更安全的方法從數據庫獲取數據:

public Dieren GetDier(string naam) 
     { 
      var con = ConfigurationManager.ConnectionStrings["Yourconnection"].ToString(); 
Dieren naamValue= new Dieren(); 
      using (SqlConnection myConnection = new SqlConnection(con)) 
      { 
       string oString ="SELECT * FROM [Dieren] WHERE Diersoort = @Diersoort"; 
       SqlCommand oCmd = new SqlCommand(oString, myConnection); 
       oCmd.Parameters.AddWithValue("@Diersoort", naam);   
       myConnection.Open(); 
       using (SqlDataReader oReader = oCmd.ExecuteReader()) 
       { 
        while (oReader.Read()) 
        {  
         naamValue.naam= oReader["naam"].ToString();      
        } 

        myConnection.Close(); 
       }    
      } 
      return naamValue; 
     }