- PR -

備考で改行するとinsertできない。

1
投稿者投稿内容
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2006-02-27 10:43
いつもお世話になっています。

Windowsアプリケーションで、テキストボックスを設置しています。
プロパティでMutilineをTrueにして、備考を入力するようにしているのですが、
改行をしてしまうと、以下がinsertされなくなってしまいます。

どなたか解決方法をご存知でしたら、教えてください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-27 10:46
引用:

モンジさんの書き込み (2006-02-27 10:43) より:

Windowsアプリケーションで、テキストボックスを設置しています。
プロパティでMutilineをTrueにして、備考を入力するようにしているのですが、
改行をしてしまうと、以下がinsertされなくなってしまいます。


具体的なイメージが、ちょっと掴められませんでした。
「以下が Insert できない」というのは、どういう意味でしょうか?

データベースに絡んだ話でしょうか?
それとも、String.Insert メソッドに絡んだ話なのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2006-02-27 11:08
じゃんぬねっとさん

返信ありがとうございます。

データベースにInsertするという話です。
画面上の[登録]ボタンを押すと、Insert文が呼び出されDBに値を代入するのですが、
テキストボックス上で改行してしまうと、以下が代入されません。
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2006-02-27 11:14
・改行コードを何らかの文字列に替えてDBに登録
・表示時はその文字列を改行コードに変換

という手順ではダメなのでしょうか?

# スマートじゃないけど・・・


[ メッセージ編集済み 編集者: Katze 編集日時 2006-02-27 11:17 ]
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-27 11:17
引用:

画面上の[登録]ボタンを押すと、Insert文が呼び出されDBに値を代入するのですが、
テキストボックス上で改行してしまうと、以下が代入されません。


コードを見せてもらえますか?
そうでないと、何が間違っているのか他人が判断できません。

そもそも取得した文字列に期待通りの値が入っているか?
クエリの組み方に問題があるか?
insert されない、とは何を持って判断したのか?
いろんな事が不明です。
_________________
囚人のジレンマな日々
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-27 11:21
引用:

モンジさんの書き込み (2006-02-27 11:08) より:

データベースにInsertするという話です。
画面上の[登録]ボタンを押すと、Insert文が呼び出されDBに値を代入するのですが、
テキストボックス上で改行してしまうと、以下が代入されません。


改行コードのせいですね。
INSERT する際に改行コードを取り除いてください。
面倒ならば、String.Replace メソッドで良いでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2006-02-27 13:39
皆様、ありがとうございます。

改行コードと取り除いたら、無事、改行後のテキストもDBに代入することが
できました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-02-28 06:20
引用:

Katzeさんの書き込み(2006-02-27 11:14)より:

・改行コードを何らかの文字列に替えてDBに登録
・表示時はその文字列を改行コードに変換

という手順ではダメなのでしょうか?


引用:

じゃんぬねっとさんの書き込み(2006-02-27 11:21)より:

改行コードのせいですね。
INSERT する際に改行コードを取り除いてください。


 誤解を与えそうな。。。

 おそらく、パラメータバインドを使わずに、文字列として INSERT 文を組み立てているため、改行コードで文が切られているのでしょう。
コード:
こんな感じ
string sql = "INSERT INTO talbe1 (NOTE) VALUES ('" + 備考 + "');";


 だから、「改行コードを置換して保存」というのは、解決方法のひとつですが、別の問題もあるわけで。例えば、"'" シングルクォーテーションを入力するとエラーになるとか、そういう「要注意文字」の置換、再置換に抜けが生じるとか。
# Windows アプリケーションだからといって、SQL Injection が行われないわけではない


 一時的に他の文字列に変える以外に、対象となるデータベースによっては、エスケープするという方法もあります。(一般にいわれる「サニタイズ」)

 しかし、パラメータバインドに変更することを強く薦めます。

〆 written by Jitta@わんくま同盟 on 2006/02/27
□ Microsoft MVP for Visual Developer ASP/ASP.NET October, 2005 - September, 2006
1

スキルアップ/キャリアアップ(JOB@IT)