• 締切済み

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(); } }

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

item_dataというテーブルに、noという列がないというエラーだと思います。 もう一度DBのテーブルを確認してみてください。

udon9257
質問者

お礼

ありがとうございます!解決しました。 今度はlistBoxに入った全てのURLをDBへインサートするとこで躓いてます。また質問させて頂きます。

udon9257
質問者

補足

item_dataにはNO列とNAME列があるのです。なんででしょうか?

関連するQ&A

  • C# データベースからの取得 Postgre

    C# データベースからの取得 Postgre 前回の知恵袋の質問に対して回答が来ましたが、より多くの情報が欲しいため、OKWAVAにも投稿させて頂きました。 以下が前回の質問URLです。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10105923705 よろしければご回答頂けると嬉しいです。 本題です。 WHERE句を使って、以下のように書き換えてみました。 ----------------------------------- "SELECT * FROM item_data WHERE NO=1" ----------------------------------- そうすると、以下のように出力されるようになりました。 ----------------------------- 列"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.ExecuteReader(CommandBehavior cb) 場所 C:\projects\Npgsql2\src\Npgsql\NpgsqlCommand.cs:行 588 場所 Npgsql.NpgsqlCommand.ExecuteReader() 場所 C:\projects\Npgsql2\src\Npgsql\NpgsqlCommand.cs:行 551 場所 posgretest.Form1.button1_Click(Object sender, EventArgs c) 場所 C:\Users\turbo2\Documents\Visual Studio 2010\Projects\posgretest\posgretest\Form1.cs:行 39 ---------------------------- DBにはちゃんとno列はあります。 これはどういうことなのでしょうか? どうやれば、1行だけのデータを表示することが出来るのでしょうか? 誰か教えて下さい。 宜しくお願い致します。

  • LISTBOXの内容が更新されません。

    VB初心者です。よろしくお願いします。 visual basic2010expressにて作成してます 担当者の新規・更新のプログラムで テキストBOX(2)・LISTbox(1)・ボタンで構成されてます。 DBを読み込み LISTBOXに表示し LISTBOXで セレクトされたものを テキストBOXに表示し 修正し 更新処理(DB更新・LISTBOX更新)をします。 新規の場合は テキストBOXに入力し 新規処理(DB追加・LISTBOX更新)をします。 DB更新迄はされるのですが リストボックスに反映されません。 再度 更新ボタンを押下すると 変更後の内容になります。 初心者の為 コードが分かりにくいと思いますがよろしくお願いします。 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load '**********リストボックスセット********** LISTBOX_SET() End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click '**********新規登録********** 'データベース接続用オブジェクト生成 Try Dim CON As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\TEST.mdb") '開始 CON.Open() Dim selectcommand As String = "INSERT INTO tantousya (ta_no, ta_mei) VALUES ('{0}', '{1}' );" Using cmb As OleDbCommand = New OleDbCommand( String.Format( selectcommand, TextBox1.Text, TextBox2.Text), CON) cmb.ExecuteNonQuery() End Using '**********リストボックスセット********** LISTBOX_SET() End Try End Sub Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click End End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click '**********変更登録********** 'データベース接続用オブジェクト生成 Try Dim CON As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\TEST.mdb") '開始 CON.Open() Dim selectcommand As String = "UPDATE tantousya SET ta_mei = '{0}' WHERE ta_no = {1};" Using cmb As OleDbCommand = New OleDbCommand( String.Format(selectcommand, TextBox2.Text, TextBox1.Text), CON) cmb.ExecuteNonQuery() End Using      '**********リストボックスセット********** LISTBOX_SET() End Try End Sub Private Sub LISTBOX_SET() '**********リストボックスセット********** '接続文字列 Dim i As Integer 'データベース接続用オブジェクト生成 Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\TEST.mdb") Try '開始 con.Open() Dim SQLCom As OleDbCommand = con.CreateCommand Dim selectcommand As String = "SELECT * FROM tantousya;" Dim da As OleDbDataAdapter = New OleDbDataAdapter(selectcommand, con) Dim ds As DataSet = New DataSet() 'データーセット() da.Fill(ds) Dim LIST As List(Of String) = New List(Of String)       For i = 0 To ds.Tables(0).Rows.Count - 1      LIST.Add(ds.Tables(0).Rows(i)("ta_no") & ds.Tables(0).Rows(i)("ta_mei") Next ListBox1.DataSource = LIST ・・・・・・・・・<ここのLISTの内容は変更になってます>・・・ Finally 'データベース終了 con.Close() End Try End Sub Private Sub ListBox1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown TextBox1.Text = MID(ListBox1.SelectedItem,1,2)     TextBox2.Text = MID(ListBox1.SelectedItem,3,10) End Sub

  • poderosaが起動できない

    オブジェクト参照がオブジェクト インスタンスに設定されていません。 というエラーがでます。 =========================================================== 2010/11/30 13:41:45 確立された接続がホスト コンピューターのソウトウェアによって中止されました。 場所 System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) 場所 System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) 場所 Poderosa.Sessions.TerminalSession.CloseByReceptionThread(String msg) 場所 C:\P4\src\TerminalSession\TerminalSession.cs:行 137 場所 Poderosa.Terminal.AbstractTerminal.Cleanup(String msg) 場所 C:\P4\src\TerminalEmulator\TerminalBase.cs:行 393 場所 Poderosa.Terminal.AbstractTerminal.OnAbnormalTermination(String msg) 場所 C:\P4\src\TerminalEmulator\TerminalBase.cs:行 362 場所 Poderosa.Protocols.SSHConnectionEventReceiverBase.OnAbnormalTerminationCore(String msg) 場所 C:\P4\src\Protocols\SSHSocket.cs:行 105 2010/11/30 13:44:49 確立された接続がホスト コンピューターのソウトウェアによって中止されました。 場所 System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) 場所 Granados.IO.PlainSocket.Write(Byte[] data, Int32 offset, Int32 length) 場所 C:\P4\src\granados\Socket.cs:行 307 場所 Granados.SSH2.SSH2Connection.TransmitPacket(SSH2DataWriter payload) 場所 C:\P4\src\granados\SSH2Connection.cs:行 383 場所 Granados.SSH2.SSH2Channel.TransmitPacket(SSH2DataWriter writer) 場所 C:\P4\src\granados\SSH2Connection.cs:行 781 場所 Granados.SSH2.SSH2Channel.Close() 場所 C:\P4\src\granados\SSH2Connection.cs:行 651 場所 Poderosa.Protocols.SSHSocket.CleanupErrorStatus() 場所 C:\P4\src\Protocols\SSHSocket.cs:行 164 場所 Poderosa.Protocols.SSHConnectionEventReceiverBase.CloseError(Exception ex) 場所 C:\P4\src\Protocols\SSHSocket.cs:行 121 =============================================================================

  • Npgsqlを用いて接続を行いたいのですが…

    C♯、PostgresSQL 8.3.7環境です。 クライアント側からDBへの接続が出来なくて困っています。 「Npgsql2.0.5-bin-ms.net」をダウンロードし、VisualStudioより Npgsql.dllの参照を追加しました。 DB接続を行うクラスにて、 using System.Data; using Npgsql; を記述、下記のようにコネクションを開いて閉じるだけのコードを 書いてみました。 //接続のテスト NpgsqlConnection conn = new NpgsqlConnection("Server=xxx.xxx.xx.xx;Port=5432;User Id=xxxx;Password=xxxx;Database=xxxx;"); conn.Open(); conn.Close(); しかし、conn.Openの段階で、添付画像のエラーが出ます。 (IOException) サーバ側の設定はノータッチなのですが、担当者はlisten_addresses = '*' は しているとのことでした。 修正、確認すべき箇所をご教授いただけないでしょうか。 宜しくお願いします。

  • ASP.NETからのデータベースの作成

    こんにちは。 SQL SERVER 2005 ExpressとIIS5.0とASP.NET2.0+C#で使っています。 一台のサーバーマシンに、SQL SERVER 2005 ExpressとIIS5.0をインストールした状態なのですが、Webページ上のC#のプログラムよりデータベースを作成しようとすると、 CREATE DATABASE 権限がデータベース 'master' で拒否されました。 と、メッセージが出ます。 要するに権限がないというのはわかるのですが、このようにWebからログインしてきたユーザーに権限を付加することはできるのでしょうか? あるいは、接続文字列かなんかで権限のあるユーザーでログインする、といったことが可能なものでしょうか? 現在は以下のようにして接続、作成を行おうとしています。 SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Server=.\\SQLEXPRESS;Integrated security=SSPI"; String strDatabase = "CREATE DATABASE newdatabase"; SqlCommand cmdDatabase = new SqlCommand(strDatabase, conn); conn.Open(); cmdDatabase.ExecuteNonQuery(); conn.Close(); エラーの内容から、SQL SERVERそのものへのアクセスは成功しているように思えます。 よろしくお願いします。

  • CLRでのListBoxのオーナードローのやり方。

    Visual C++のCLRでフォームアプリケーションを作っていて、ListBoxのオーナードローの方法がわからないので質問させてもらいました。 CLRでプログラミングしたことが無く書籍などを読んだこともなく見よう見まねで作っています。 やりたいことはとりあえず http://dobon.net/vb/dotnet/control/lbownerdraw.html にあることです。 サンプルプログラムはVBとC#でC++がありません。 MSDN(http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.drawitem.aspx)も同様でVBとC#のサンプルプログラムでC++がありませんでした。 とりあえず。 C#のサンプル----------------------------------------------- //DrawItemイベントハンドラ //項目を描画する private void ListBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e) { //背景を描画する //項目が選択されている時は強調表示される e.DrawBackground(); //文字を描画する色の選択 Brush b = null; if ((e.State & DrawItemState.Selected) != DrawItemState.Selected) { //選択されていない時 switch (e.Index % 3) { case 0: b = new SolidBrush(Color.Red); break; case 1: b = new SolidBrush(Color.Blue); break; case 2: b = new SolidBrush(Color.Green); break; } } else { //選択されている時はそのままの前景色を使う b = new SolidBrush(e.ForeColor); } //描画する文字列の取得 string txt = ((ListBox) sender).Items[e.Index].ToString(); //文字列の描画 e.Graphics.DrawString(txt, e.Font, b, e.Bounds); //後始末 b.Dispose(); //フォーカスを示す四角形を描画 e.DrawFocusRectangle(); } ----------------------------------------------- を参考にしてForm1に private: System::Void ListBox1_DrawItem(System::Object^ sender, System::Windows::Forms::DrawItemEventArgs^ e) { //背景を描画する //項目が選択されている時は強調表示される e->DrawBackground(); //文字を描画する色の選択 } と書いてみたのですが、そのあとどうすればよいかわかりません。 わかる方、回答お願いします。

  • vb .net Winアプリでコンボボックスに値を

    vb .net Winアプリでコンボボックスに値をセットする方法を教えて下さい。 table1 都道府県コード,都道府県名(カナ),都道府県名 01,ホッカイドウ,北海道 02,アオモリケン,青森県 03,イワテケン,岩手県 のテーブルがあり、既に読み込んでいます。 このデータをコンボボックスにセットしたいです。 Dim NpgsqlConnection1 As NpgsqlConnection Dim NpgsqlCommand1 As NpgsqlCommand Dim NpgsqlDataAdapter1 As NpgsqlDataAdapter Dim String1 As String Dim DataTable1 As DataTable NpgsqlConnection1 = New Npgsql.NpgsqlConnection NpgsqlConnection1.ConnectionString = gstrCnct NpgsqlConnection1.Open() String1 = "select * from table1;" NpgsqlCommand1 = New NpgsqlCommand NpgsqlCommand1.Connection = NpgsqlConnection1 NpgsqlCommand1.CommandText = String1 NpgsqlDataAdapter1 = New NpgsqlDataAdapter(String1, NpgsqlConnection1) DataTable1 = New System.Data.DataTable NpgsqlDataAdapter1.Fill(DataTable1) ' 一括の方法でもOK ' Me.ComboBox1.??? = ???? ' ぐるぐるしながらセットでもOK ' Me.ComboBox1.??? = Space(0) ' Me.ComboBox1.??? = "ミセンタク" ' Me.ComboBox1.??? = "未選択" For Each DataRow1 As DataRow In DataTable1.Rows ' Me.ComboBox1.??? = DataRow1("都道府県コード") ' Me.ComboBox1.??? = DataRow1("都道府県名(カナ)") ' Me.ComboBox1.??? = DataRow1("都道府県名") Next DataRow1 ■要件 メインの情報は都道府県名ですが、 めくった時に 都道府県コード,都道府県名(カナ),都道府県名 を見せる形で作りたいです。 都道府県コードは取り出す必要があります。 データ 1行目は空白,ミセンタク,未選択 2行目以降はtable1から取り出した値。 以上、よろしくお願いします。

  • suse 10.5にRealTek 8169のドライバのinstallに失敗

    suse 10.5にRealTek 8169のドライバのinstallに失敗して困っています 1.RealTekのホームページよりr1000_v1.04.gzを入手 2.r1000_v1.04.gzを解凍して、以下のコマンドにて対応 ・cd r100_v1.04 ・make clean modules ★下記のエラーが発生 make clean modules -----途中省略----- make -C ../../../linux-2.6.16.21-0.25 O=../linux-2.6.16.21-0.25-obj/i386/smp modules /tmp/8169/r1000_v1.04/src/Makefile:28: /usr/src/linux-2.6.16.21-0.25/src/Makefile_linux26x: No such file or directory make[5]: *** No rule to make target `/usr/src/linux-2.6.16.21-0.25/src/Makefile_linux26x'. Stop. -----途中省略----- ★下記のエラーの対応 vi srrc/Makefileの修正 include $(PWD)/src/Makefile_linux26x ↓ include /tmp/8169/r1000_v1.04/src/Makefile_linux26x ★上記修正後、make clean modulesする make -C src/ clean -----途中省略----- make -C ../../../linux-2.6.16.21-0.25 O=../linux-2.6.16.21-0.25-obj/i386/smp modules CC [M] /tmp/8169/r1000_v1.04/src/r1000_n.o /tmp/8169/r1000_v1.04/src/r1000_n.c:51: error: expected ‘)’ before string constant /tmp/8169/r1000_v1.04/src/r1000_n.c:52: error: expected ‘)’ before string constant /tmp/8169/r1000_v1.04/src/r1000_n.c:53: error: expected ‘)’ before string constant -----途中省略----- ※上記エラーは、下記らしいのですが、どうしたらよいわかりません。 MODULE_PARM (speed, "1-" __MODULE_STRING(MAX_UNITS) "i"); MODULE_PARM (duplex, "1-" __MODULE_STRING(MAX_UNITS) "i"); MODULE_PARM (autoneg, "1-" __MODULE_STRING(MAX_UNITS) "i"); どなたかヒントをお願いします

  • javaについて

    このプログラムは文字を入力して、検索をかけてその検索にかかった秒数を表示するものですが、検索数を表示するのにはどうしたらいいでしょうか? import java.io.*; import java.net.*; public class Sample { public static void main(String[] args) { System.out.println("入力してください"); String keyword = getKeyword(); String htmlSrc = getHTMLSrc("http://search.yahoo.co.jp/search?p=" + keyword, "UTF-8"); double sec = getSearchSec(htmlSrc); if (sec > 0) { System.out.println("検索秒数は" + sec + "秒"); } else { System.out.println("検索結果0件"); } } private static String getKeyword() { String keyword = ""; BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); keyword = br.readLine(); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } keyword = keyword.replaceAll(" ", "+"); return keyword; } private static String getHTMLSrc(String strURL, String charSet) { StringBuffer sb = new StringBuffer(); HttpURLConnection conn = null; BufferedReader br = null; try { URL url = new URL(strURL); conn = (HttpURLConnection)url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream(), charSet); br = new BufferedReader(isr); String tmp = ""; while ((tmp = br.readLine()) != null) { sb.append(tmp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } private static double getSearchSec(String htmlSrc) { double sec = 0; String tmp = htmlSrc.replaceAll("<.+?>| ", ""); tmp = tmp.replaceAll(".*件-", ""); tmp = tmp.replaceAll("秒.*", ""); try { sec = Double.parseDouble(tmp); } catch (NumberFormatException e) { } return sec; } }

  • DBから取得した値の変換方法

    DB MySQL カラム:name varchar(255),ucs2_bin データ:てすと 上記のデータを下記の処理で(VB.Net)取得しようと すると文字が化け(????)て取得されてしまうのですが デコードの仕方が良く分かりません。 System.Text.~を使うと思うのですが何を指定したら いいのか分からないのでご教授お願い致します。 ちなみに言語は日・中・英と対応する必要があります。 --処理-- Dim conn As New MySQLConnection( _ String.Format("Port={0};Server={1};Data Source={2};User ID={3};Password={4}", _ port, computer, database, user, password)) Dim cmd As MySQLCommand Dim red As MySQLDataReader conn.Open() Dim sql = "select name from test" cmd = New MySQLCommand(sql, conn) red = CType(cmd.ExecuteReader(), MySQLDataReader) Do While red.Read Console.WriteLine(red("NAME")) Loop red.Close() cmd.Dispose()

専門家に質問してみよう