2016-06-20 6 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); 
} 

私は上記のコードの一部でやろうとしているように、新しいDIERの新しい名前として、文字列ナームを作りたいです。

+3

は、SQLクエリを構築するための文字列concatentationは絶対に使用しないでください。 –

答えて

0

変数を別の変数の名前として使用することはできません。そして正直なところ、それは意味をなさない。変数の名前は、コードの最終結果ではなく、プログラマとしてのみ役に立ちます。

SQLはSQLインジェクションに対して脆弱であることにも注意してください。常にパラメータ化されたクエリを使用してください!ここで

+0

問題はDierenのテーブルにあるすべてのDierを取り出してクラスに追加したいということです。これが私が考えることができる唯一の方法でした。おそらくこれに別の解決策がありますか? – RensvDijck

+0

あなたはリストや辞書にそれらを詰め込みたいですか? –

+0

リストにあります。 – RensvDijck

1

あなたは、DBからデータを取得するために、より安全な方法があります:

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; 
     } 
関連する問題