2017-01-23 9 views
0

Visual Studioですべての挿入、選択、および削除を行いたいが、どのように記述するのか分からない。Visual StudioにSQLクエリを書き込む方法は?

SqlConnection con = new SqlConnection("Data Source=5CG50749V3\\SQLEXPRESS;Initial Catalog=test;Integrated Security=True"); 
con.Open(); 

SqlCommand cmd = new SqlCommand("INSERT INTO backup(Option,EquipmentID,SerialNumber,Description,Location,DueDate,DaytoDue,EquipmentWithdraworRemarks,NCRorOOTHistory,LastOOTissuanceDate,AvailableinSapphire,ResponsiblePerson,CalibrationOption,CalibrationSourceorLab,YearofManufacturing,ManufacturerorVendor,CalibrationCost,AssetNo,CalibrationTAT,SendInDate,Status), SELECT * FROM Equipment where (SerialNumber = '" + TextBox2.Text + "' or EquipmentID = '" + TextBox1.Text + "'), DELETE FROM Equipment where (SerialNumber = '" + TextBox2.Text + "' or EquipmentID = '" + TextBox1.Text + "')", con); 

cmd.ExecuteNonQuery(); 
con.Close(); 
+2

使用パラメータ下さい... –

+3

[SQLインジェクションの警告](http://msdn.microsoft.com/en-us/library/ms161953 %28v = sql.105%29.aspx) - SQL文を連結しない** ** SQLインジェクションを避けるために**パラメータ化クエリ**を使用する –

+0

代わりに** Entity Framework **を使用し、もはやあなた自身のSQLの隣に書く必要はありません! –

答えて

1

あなたは、この使用してパラメータ化クエリ以下のように行うことができます。

string connectionstring = "Data Source=5CG50749V3\\SQLEXPRESS;Initial Catalog=test;Integrated Security=True"; 
      using (SqlConnection connection = new SqlConnection(connectionstring)) 
      { 

       string sql = @"INSERT IntO [backup](Option,EquipmentID,SerialNumber,Description,Location, 
           DueDate,DaytoDue,EquipmentWithdraworRemarks,NCRorOOTHistory,LastOOTissuanceDate, 
           AvailableinSapphire,ResponsiblePerson,CalibrationOption,CalibrationSourceorLab, 
           YearofManufacturing,ManufacturerorVendor,CalibrationCost,AssetNo,CalibrationTAT,SendInDate,Status) 
           SELECT * FROM Equipment where SerialNumber = @serialnumber or EquipmentID = @equipmentId; 
           DELETE FROM Equipment where SerialNumber = @serialnumber or EquipmentID = @equipmentId"; 
       using (SqlCommand command = new SqlCommand(sql, connection)) 
       { 
        command.Parameters.Add("@serialnumber", SqlDbType.NVarChar).Value = "testSerialNumber"; 
        command.Parameters.Add("@equipmentId", SqlDbType.NVarChar).Value = "testequipmentid"; 
        connection.Open(); 
        command.ExecuteNonQuery(); 
        connection.Close(); 
       } 

      } 
+0

@ naz-Edyraではなく常にフィールドリストを使用してください。混乱があれば教えてください。 – Amir

+0

ありがとうございました。私はまずそれを試してみます。挿入クエリの場合は –

+0

ですが、実際には各列の値はわかりません。ユーザーはシリアル番号または装置IDに基づいてデータを検索します。データはそれに基づいて表示されます。すべてのデータがユーザーに表示されるわけではありません。一部のデータはSQL Serverにのみ格納されます。しかし、私はユーザーに表示され、SQL Serverに格納されているすべてのデータを移動したい。価値のために、私は何を置くべきですか?それは列名ですか? @Amir –

1

SqlCommand(String)メソッドは引数を1つしか取らず、クエリのテキストを使用してSqlCommandクラスの新しいインスタンスを初期化します。

関連する問題