Как удалить строку в таблице в Npgsql? - PullRequest
1 голос
/ 26 ноября 2010

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

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

Ответы [ 2 ]

1 голос
/ 26 ноября 2010

астандер и ребята.Спасибо за помощь.После нескольких попыток я нашел решения.BookID - это имя столбца, этот символ " " необходимо добавить до и после имени столбца.Поэтому правильный путь:

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

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

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

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

0 голосов
/ 26 ноября 2010

Вы пытались использовать 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(); 
}
...