2017-08-02 45 views
0

私は新しいIDをユーザーから取得し、それをsectionidの外部キーを含む学生のテーブルと比較する必要があります。あなたが私に次に何をするのかを手伝ったら、私は検索しましたが、私は何も理解していません。ユーザーIDとテーブルの比較asp.net

[HttpPost] 
public ActionResult CheckSectionIDagainststudentID(string sectionID) 
{ 
    int x = Int32.Parse(sectionID); 

    ConnectionManager connManager = new ConnectionManager(); 
    SqlConnection conn = connManager.GetConnection(); 
    using (SqlCommand cmd = new SqlCommand()) 
    { 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "Select * From Student Where sectionid = " + x; 
     cmd.Connection = conn; 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
    } 
+2

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/retrieving-data-using-a-datareader –

+0

こんにちは –

答えて

1

あなたはすべてのテーブルを知っているわけではありませんが、私はSqlDataAdapterを使用しているものを完成させます。これは、テーブルにロードするときにあなたのための仕事の束を行います。

"cmd.ExecuteNonQuery()"行を次のように置き換えます。

var sda - new SqlDataAdapter(); 
sda.Command = cmd; 
var tbl = new DataTable(); 
sda.Fill(tbl); 

これは、すべてのレコードをプルダウンして、データテーブルオブジェクトに格納する必要があります。それから、各レコードを調べて、必要なものを実行できます。

また、パラメータを修正してください。番号が必要な場合は、そうしてください。しかし、Webポストから、すべてが文字列として来て、あなたが行ったように解析する必要があります。 int.TryParse()コマンドを使用してください(それを読んでください)。何らかの不正なテキストが予期せず入った場合にクラッシュするのを防ぐためです。

最後に、SQLインジェクションを防ぐために、現在および将来すべてのクエリを修正してください。

cmd.CommandText = "Select * From Student Where sectionid = @parmSectionID"; 
cmd.Parameters.AddWithValue("parmSectionID", x); 

パラメータの文字列表現に "@"を追加しないでください。

特にS/OとSQLインジェクションの間で、より多くのSQLコマンドを読んでください。長い目で見ればあなたを噛んでしまう悪いテクニックから始めてはいけません。

+0

よろしくお願いします。 –

関連する問題