2013-12-23 5 views
0

Я написал оператор условия if в C# с кодом SQL для обновления, удаления и вставки данных.Оператор условия IF, который пишет между sql в asp.net C#

У меня возникла проблема с тем, что данные не будут удаляться из таблицы.

Условие, если значение Qty равно нулю или 0, затем удалите из таблицы db, любезно посоветуйте, спасибо.

public void insertData(string str1, string str2, string str3, string str4, string str5, string str6, string str7, string str8, string str9, string str10, string str11, string str12) 
{ 
    string Qty = Inv_Qty.Text; 
    string Inv_ID = WMItem.SelectedValue; 
    string FromLoc = Inv_FromLoc.SelectedValue; 

    SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CIMProRPT01ConnectionString"].ConnectionString); 
    con.Open(); 

    string UpdateWMMRSQL = "UPDATE [CIMProRPT01].[dbo].[OTH_INV_QTY_LOC] SET INV_QTY = INV_QTY - '" + Qty + "' WHERE INV_ID = '" + Inv_ID + "' AND INV_LOCATION = '" + FromLoc + "' "; 

    string sql = "INSERT INTO OTH_INV_TRANSACTION (INV_TRANS_ID,INV_ID,INV_TRANS_LOCATION,INV_TRANS_QTY,INV_TRANS_REQUESTOR,INV_TRANS_REFNO,INV_TRANS_REMARK,INV_REASON_ID,INV_REASON_REMARK,INV_CREATE_DATE,INV_CREATE_USER,INV_FROMLOC) VALUES ('" + str1 + "','" + str2 + "','" + str3 + "','" + str4 + "','" + str5 + "','" + str6 + "','" + str7 + "','" + str8 + "','" + str9 + "','" + str10 + "','" + str11 + "','" + str12 + "')"; 

    SqlCommand cmd1 = new SqlCommand(UpdateWMMRSQL, con); 
    SqlCommand cmd2 = new SqlCommand(sql, con); 

    cmd1.ExecuteNonQuery(); 
    cmd2.ExecuteNonQuery(); 

    con.Close(); 

    if (Qty == "0") 
    { 
     SqlConnection con2 = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CIMProRPT01ConnectionString"].ConnectionString); 

     con2.Open(); 

     string DeleteWMMRSQL = "DELETE FROM [CIMProRPT01].[dbo].[OTH_INV_QTY_LOC] WHERE INV_ID = '" + Inv_ID + "' AND INV_LOCATION = '" + FromLoc + "' "; 

     SqlCommand cmddelete = new SqlCommand(DeleteWMMRSQL, con2); 

     cmddelete.ExecuteNonQuery(); 

     con2.Close(); 

    } 
} 

ответ

3

Задача 1: вы только проверяете погоду Qty является Zero или нет, но согласно вашему требованию вам необходимо также проверить null, Whitespace и Empty Aswell.

Решение 1: вы можете использовать String.IsNullOrWhiteSpace() функцию, чтобы проверить погоду данный String является NULL или WhiteSpace или EMPTY.

Заменить Это:

if (Qty == "0") 

с этим:

if (String.IsNullOrWhiteSpace(Qty) || Qty.Trim().Equals("0")) 

Задача 2: вы приложили одиночные кавычки вокруг INT колонны INV_ID.

Решение 2: вам не нужно заключать single quotes вокруг INT колонн.

Заменить это:

string DeleteWMMRSQL = "DELETE FROM [CIMProRPT01].[dbo].[OTH_INV_QTY_LOC] WHERE INV_ID = '" + Inv_ID + "' AND INV_LOCATION = '" + FromLoc + "' "; 

с этим:

string DeleteWMMRSQL = "DELETE FROM [CIMProRPT01].[dbo].[OTH_INV_QTY_LOC] WHERE INV_ID = " + Inv_ID + " AND INV_LOCATION = '" + FromLoc + "' "; 

предложение: ваш запрос открыт для SQL injection attacks, я хотел бы предложить вам использовать parameterised sql queries, чтобы избежать их.

Удалить Код: Использование parameterised queries

if (String.IsNullOrWhiteSpace(Qty) || Qty.Trim().Equals("0")) 
    { 
     SqlConnection con2 = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CIMProRPT01ConnectionString"].ConnectionString); 

     con2.Open(); 

     string DeleteWMMRSQL = "DELETE FROM [CIMProRPT01].[dbo].[OTH_INV_QTY_LOC] WHERE INV_ID = @INV_ID AND INV_LOCATION = @INV_LOCATION"; 

     SqlCommand cmddelete = new SqlCommand(DeleteWMMRSQL, con2); 
     cmddelete.Parameters.AddWithValue("@INV_ID",Inv_ID); 
     cmddelete.Parameters.AddWithValue("@INV_LOCATION",FromLoc); 
     cmddelete.ExecuteNonQuery(); 

     con2.Close(); 

    } 
+0

Дорогой Sudhakar Tillapudi, спасибо за ответ и посоветовать, я изменил код и запустить код, но проблема по-прежнему остается тем же. Просьба помочь –

+0

@CaulsonChua: не могли бы вы отладить свой код и сообщить мне об ошибке и содержимом внутри переменной 'Qty'? –

+0

Уважаемый Sudhakar Tillapudi, код i debug показывает, что если 0 или null, он не удалит элемент. –

Смежные вопросы