2016-05-03 3 views
0

私は、SQLコマンドを使用してデータを取得する同僚と一緒にプロジェクトを進めています。このコマンドが何をしているのか理解しようとしています:cmd.CommandText = "SELECT * FROM [Vehicles].[db_ddladmin].[View_VehicleReadouts] WHERE ECU='" + ecu + "' AND " + wherestr + " ORDER BY Name";Windows SQL Server管理でのテーブルの検索

ReadoutsとVehicleという名前のSQL Server管理2014に2つのテーブルがありますが、コマンドの機能を理解できません。

+1

SQLはテーブルではなくビューから選択されています。 – Kason

+0

それはどういう意味ですか? –

+0

これはViewsフォルダにあります。 – Kason

答えて

0

このコマンドは、テーブルまたはビューである可能性があるView_VehicleReadoutsオブジェクトに対して選択クエリを実行します。このオブジェクトはVehiclesデータベースにあり、スキーマ​​にあります。あなたが2度見つけたテーブルの読書と乗り物では、彼らは異なったスキーマを持っていなければなりません。 注:SQLインジェクションを避けるには、パラメータ化されたクエリを使用してください。

+0

.. 'ECU'は' ecu'変数で、 'wherestr'は' ColumnName = ColumnValue'のようなものです。 –

+0

私はSQLに本当に慣れていません。SQLインジェクションを避けるためにパラメータ化をすればどういう意味ですか? –

+0

私は、ユーザー入力から直接クエリを書く代わりに、パラメータを使用することを意味します。 WHERE ECU = '"+ ecu +"のようなクエリを書くのは避けてください。どこにECU = @ ecuを書きますか?このリンクを確認してください。https://msdn.microsoft.com/en-us/library/ff648339.aspx –

1

ここでは、CommandTextプロパティを使用してコマンドのテキストを指定しました。コマンドテキストには、ストアドプロシージャの名前、テーブル名、またはSQLステートメントがあります(次のコードを参照)。

sql

SqlCommand cmd = new SqlCommand(); 

cmd.CommandText = "myStoredProcedureName"; //Stored procedure 

cmd.CommandText = "Vehicles"     //Table name 

cmd.CommandText = "SELECT * FROM View_VehicleReadouts "  //SQL statement 

あなたは、データベース内の2つのテーブルを持っているので。これはビュー(SQL管理スタジオのオブジェクトエクスプローラの 'Views'フォルダの下に表示されます)です。