2010-11-26 4 views
1

Я использую этот код, чтобы удалить строку в таблице, но она не работает. Я что-то ошибаюсь или пропустил?Как удалить строку в таблице в Npgsql?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using Npgsql; 

namespace WindowsFormsApplication4 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button_RemoveBook_Click(object sender, EventArgs e) 
     { 
      NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;Port=5432;User Id=user;Password=1234;Database=library;"); 
      conn.Open(); 
      string sql = "DELETE FROM books WHERE BookID=1;"; 
      NpgsqlCommand command = new NpgsqlCommand(sql, conn); 
      conn.Close(); 
     } 
    } 
} 

В приведенной выше задаче я заметил, что база данных не вносила никаких изменений. BookID = 1, которая является первой строкой в ​​базе данных, все еще остается.

Я попытался использовать команду INSERT, она работает. Новые данные были вставлены в последнюю строку таблицы. Код ниже работает хорошо.

private void button_addBook_Click(object sender, EventArgs e) 
{ 
    NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;Port=5432;User Id=user;Password=1234;Database=library;"); 
    conn.Open(); 
    string addRow = string.Format("insert into books values(50,'Time','Frank','Science')"); 
    NpgsqlCommand command = new NpgsqlCommand(addRow, conn); 
    conn.Close(); 

Любые подсказки? Благодарю.


Ответ: astander

Он показывает сообщение об ошибке:
http://i901.photobucket.com/albums/ac218/pcser/error.jpg

ответ

1

astander and guys.
Спасибо вам за помощь.
После нескольких попыток я нашел решения.

BookID это имя столбца, этот символ «» должно быть добавлено до и после имени столбца.

Поэтому правильный путь:

string sql = "DELETE FROM books WHERE \"BookID\"=1;"; 

Это неправильно:

string sql = "DELETE FROM books WHERE BookID=1;"; 


Еще раз спасибо за вашу помощь.

+2

Плохая идея назвать столбцы или таблицы в смешанном случае. Я рекомендую переименовать его в bookid и никогда не использовать двойные кавычки: «alter table books переименовать столбец« BookID »в bookid» – Tometzky 2010-11-26 11:02:58

0

вы пробовали с помощью NpgsqlCommand.ExecuteNonQuery Method

Что-то вроде

private void button_RemoveBook_Click(object sender, EventArgs e) 
{ 
    NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;Port=5432;User Id=user;Password=1234;Database=library;"); 
    conn.Open(); 
    string sql = "DELETE FROM books WHERE BookID=1;"; 
    NpgsqlCommand command = new NpgsqlCommand(sql, conn); 
    command.ExecuteNonQuery(); //this line here?? 
    conn.Close(); 
} 
+0

Это сообщение об ошибке: http://i901.photobucket.com/albums/ac218/pcser/error.jpg Снимок экрана базы данных: http://i901.photobucket.com/albums/ac218/pcser/ database.jpg – mjb 2010-11-26 05:18:44

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