2013-07-03 3 views
1

Этот метод приведен ниже в таблицу и удаляет всю таблицу. Но в таблице данных, приведенной ниже в первом столбце, есть даты, которые я хотел бы удалить из базы данных. как бы я это сделалудалить данные из таблицы SQL на основе ввода данных

Datatable table = new DataTable() 

    string sqlConnectionString = 
       "Server = 100.720.8.196; Database = testDat; User Id = sa; Password = "; 
       // Copy the DataTable to SQL Server 
       using (SqlConnection conn = new SqlConnection(sqlConnectionString)) 
       { 
        string deleteSting = 
        "delete from dbo.testTable where clientId=1212"; 
        conn.Open(); 
        using (SqlCommand cmd = new SqlCommand(deleteSting, conn)) 
        { 
         cmd.ExecuteNonQuery(); 
        } 
        conn.Close(); 
       } 
+0

* даты, которые я хотел бы удалить *, а? – Liam

ответ

2

Я просто предполагаю здесь, вы, вероятно, имели в виду, чтобы сделать столбец даты пустой. Если это так, вы используете UPDATE, например:

string updateString = 
        "UPDATE dbo.testTable SET datecol = @datecol where [email protected]"; 

conn.Open(); 
using (SqlCommand cmd = new SqlCommand(updateString, conn)) 
     { 

     cmd.Parameters.Add("@datecol", SqlDbType.Date).Value = DbNull.Value; 
     cmd.Parameters.Add("@clientID", SqlDbType.Int).Value = 1212; 

     cmd.ExecuteNonQuery(); 
     } 
     conn.Close(); 
0

Ну, есть несколько вариантов. Вы можете пройти через таблицу и создать строку, содержащую ваши даты, в списке, разделенном запятыми. С этим вы можете создать инструкцию SQL, такую ​​как delete from table where dateCol in (date1, date2, date3, etc...)

Или вы можете просто прокрутить свою таблицу данных и выполнить одно удаление на каждый цикл. В любом случае это сработает.

Однако вы решили продолжить, убедитесь, использовать параметры вместо конкатенации, чтобы предотвратить проблемы, как SQL Инъекции:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx

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