1

このコードを使用してテーブルの行を削除していますが、機能していません。私は間違いを犯したり、何かを見逃したりしますか?

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

4

2 に答える 2

1

アスタンダーとみんな。
助けてくれてありがとう。
何度か試した後、解決策を見つけました。

BookID は列の名前です。この記号" "を列名の前後に追加する必要があります。

したがって、正しい方法は次のとおりです。

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

これは間違っています:

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


ご協力いただきありがとうございます。

于 2010-11-26T06:25:20.127 に答える
0

NpgsqlCommand.ExecuteNonQuery メソッドを使用してみましたか

何かのようなもの

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(); 
}
于 2010-11-26T04:44:39.303 に答える