- 締切済み
ListBox Posgre データベース
bybalsendercase様先日はご回答頂きありがとうございました。 先日質問させて頂いたudon9257です。 今度はListBoxに入ったURL(文字列)を表示するのではなく、データベースへ入れたいと思っていまして、以下のように追記して見ました。 ですが、以下のようにエラーが出てしまってうまく行きません。 どうしたらいいでしょうか? 前回URL http://okwave.jp/qa/q8060623.html ---------------------------------------------------------- <エラー部分> リレーション"item_data"の列"no"は存在しません Severity: ERROR Code: 42703 場所 Npgsql.NpgsqlState.<ProcessBackendResponses_Ver_3>d__a.MoveNext() 場所 C:\projects\Npgsql2\src\Npgsql\NpgsqlState.cs:行 843 場所 Npgsql.ForwardsOnlyDataReader.GetNextResponseObject() 場所 C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:行 1173 場所 Npgsql.ForwardsOnlyDataReader.GetNextRowDescription() 場所 C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:行 1191 場所 Npgsql.ForwardsOnlyDataReader.NextResult() 場所 C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:行 1377 場所 Npgsql.ForwardsOnlyDataReader..ctor(IEnumerable`1 dataEnumeration, CommandBehavior behavior, NpgsqlCommand command, NotificationThreadBlock threadBlock, Boolean synchOnReadError) 場所 C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:行 1040 場所 Npgsql.NpgsqlCommand.GetReader(CommandBehavior cb) 場所 C:\projects\Npgsql2\src\Npgsql\NpgsqlCommand.cs:行 611 場所 Npgsql.NpgsqlCommand.ExecuteNonQuery() 場所 C:\projects\Npgsql2\src\Npgsql\NpgsqlCommand.cs:行 512 場所 urlindex.Form1.EntryDataToDb(String pStrUrl) 場所 C:\Users\turbo2\Documents\Visual Studio 2010\Projects\urlindex_timer\urlindex\Form1.cs:行 188 ----------------------------------------------------------- <以下追加部分> private void button1_Click(object sender, EventArgs e) { listBox1.Text = listBox1.Text.Trim(); String strUrl = listBox1.Text; if (!String.IsNullOrEmpty(strUrl)) { EntryDataToDb(strUrl); } } public void EntryDataToDb(String pStrUrl) { string connStr = "Server=127.0.0.1;Port=5432;User Id=postgres;Password=xxxxxxxx;Database=xxxxxxxx"; String sql = "INSERT INTO ITEM_DATA (NO,NAME) VALUES(@NO, @NAME)"; int no; int.TryParse(pStrUrl, out no); using (NpgsqlConnection conn = new NpgsqlConnection(connStr)) { using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) { NpgsqlParameter parm; parm = new NpgsqlParameter("@NO", NpgsqlDbType.Integer); parm.Value = no; cmd.Parameters.Add(parm); //parm = new NpgsqlParameter("@NAME", NpgsqlDbType.Varchar); //parm.Value = pName; cmd.Parameters.Add(parm); try { conn.Open(); int count = cmd.ExecuteNonQuery(); if (count > 0) { MessageBox.Show(count.ToString() + "件登録しました。"); listBox1.Text = ""; } NpgsqlCommand com = new NpgsqlCommand("SELECT * FROM item_data", conn); NpgsqlDataReader reader = com.ExecuteReader(); // 1 行ずつ読み込む while (reader.Read()) { // 列の分だけ表示 for (int i = 0; i < reader.FieldCount; ++i) { Console.WriteLine("{0}\t", reader[i]); } } } catch (Exception m) { Console.WriteLine(m.ToString()); } finally { conn.Close(); } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- oboroxx
- ベストアンサー率40% (317/792)
item_dataというテーブルに、noという列がないというエラーだと思います。 もう一度DBのテーブルを確認してみてください。
お礼
ありがとうございます!解決しました。 今度はlistBoxに入った全てのURLをDBへインサートするとこで躓いてます。また質問させて頂きます。
補足
item_dataにはNO列とNAME列があるのです。なんででしょうか?