質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

1回答

2941閲覧

C# 文字列の部分一致

sosuke_21

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2016/07/04 01:38

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

###発生している問題・エラーメッセージ

エラーメッセージ ```型 'System.Data.OleDb.OleDbException' のハンドルされていない例外が System.Data.dll で発生しました ###該当のソースコード ```ここに言語を入力 ここにご自身が実行したソースコードを書いてください

using System;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Text.RegularExpressions;

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

private void label1_Click(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { OleDbConnection conn = new OleDbConnection(); OleDbCommand command = new OleDbCommand(); int ID; string Name; DateTime Birth; conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db\Db2.mdb"; conn.Open(); string iID = textBox2.Text; string iName = textBox3.Text; string iBirth = textBox4.Text; int flg = 0; string sql = "SELECT * FROM t_member WHERE"; if (iID != "") { sql += " ID = @ID"; OleDbParameter pID = new OleDbParameter("@ID", iID); command.Parameters.Add(pID); flg = 1; } if (iName != "") { if (flg != 0) { sql += " and "; } sql += " m_name like @NAME "; string eName = escapeString(iName); OleDbParameter pName = new OleDbParameter("@NAME", eName); command.Parameters.Add(pName); flg = 1; } if (iBirth != "") { if (flg != 0) { sql += " and "; } sql += " m_birth = @BIRTH "; OleDbParameter pBirth = new OleDbParameter("@BIRTH", iBirth); command.Parameters.Add(pBirth); flg = 1; } if (flg == 0) { return; } command.CommandText = sql; command.Connection = conn; OleDbDataReader reader = command.ExecuteReader(); memberDataSet.Clear(); while (reader.Read()) { ID = reader.GetInt32(0); Name = reader.GetString(1); Birth = reader.GetDateTime(2); Console.WriteLine("ID:" + iID + "名前:" + iName + "生年月日:" + iBirth); } conn.Close(); } private string escapeString(string iName) { string str = "%" + Regex.Replace(iName, "[_%\\[#]", "#$0") + "%"; return str; } private void button1_Click(object sender, EventArgs e) { } }

}

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2016/07/04 08:47

try - catchが無いのですから、発生した例外はハンドルされないです。発生したのはOLE DB関連の例外ですが、どうして「文字列の部分一致」というタイトルなのですか????
guest

回答1

0

見づらいので </> を押してコードを囲ってください。
ざっと見たところ、conn と command が関連付けられていないようです。
command.Connection = conn としてください。

C#

1using System; 2using System.Windows.Forms; 3using System.Data.OleDb; 4using System.Text.RegularExpressions; 5 6namespace DBselect_2 7{ 8 public partial class Form1 : Form 9 { 10 public Form1() 11 { 12 InitializeComponent(); 13 } 14 15 private void label1_Click(object sender, EventArgs e) 16 { 17 18 } 19 20 private void button2_Click(object sender, EventArgs e) 21 { 22 OleDbConnection conn = new OleDbConnection(); 23 OleDbCommand command = new OleDbCommand(); 24 25 int ID; 26 string Name; 27 DateTime Birth; 28 29 conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db\Db2.mdb"; 30 31 conn.Open(); 32 33 string iID = textBox2.Text; 34 string iName = textBox3.Text; 35 string iBirth = textBox4.Text; 36 int flg = 0; 37 38 string sql = "SELECT * FROM t_member WHERE"; 39 if (iID != "") 40 { 41 sql += " ID = @ID"; 42 OleDbParameter pID = new OleDbParameter("@ID", iID); 43 command.Parameters.Add(pID); 44 flg = 1; 45 46 } 47 if (iName != "") 48 { 49 if (flg != 0) 50 { 51 sql += " and "; 52 } 53 sql += " m_name like @NAME "; 54 string eName = escapeString(iName); 55 OleDbParameter pName = new OleDbParameter("@NAME", eName); 56 command.Parameters.Add(pName); 57 flg = 1; 58 } 59 if (iBirth != "") 60 { 61 if (flg != 0) 62 { 63 sql += " and "; 64 } 65 sql += " m_birth = @BIRTH "; 66 OleDbParameter pBirth = new OleDbParameter("@BIRTH", iBirth); 67 command.Parameters.Add(pBirth); 68 flg = 1; 69 } 70 if (flg == 0) 71 { 72 return; 73 } 74 75 command.CommandText = sql; 76 command.Connection = conn; 77 78 OleDbDataReader reader = command.ExecuteReader(); 79 80 memberDataSet.Clear(); 81 82 while (reader.Read()) 83 { 84 ID = reader.GetInt32(0); 85 Name = reader.GetString(1); 86 Birth = reader.GetDateTime(2); 87 88 Console.WriteLine("ID:" + iID + "名前:" + iName + "生年月日:" + iBirth); 89 90 } 91 conn.Close(); 92 } 93 94 private string escapeString(string iName) 95 { 96 string str = "%" + Regex.Replace(iName, "[_%\\[#]", "#$0") + "%"; 97 return str; 98 } 99 100 private void button1_Click(object sender, EventArgs e) 101 { 102 103 } 104 } 105}

投稿2016/07/04 23:12

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問