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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

2130閲覧

C#でデータベースの値をUPDATEで更新してSELECTで検索すると???になる

OMISAO

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/09/17 12:38

編集2020/09/17 13:10

前提・実現したいこと

Visual Studioでローカルデータベースを使って名簿を作成しようとしています。
UPDATE文でtextBox2に記入した値にデータ更新をしたい。

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

更新後、確認してみると、
対象のデータが「????」になってしまいます。
コンパイル、プログラムの動作は問題なく実行しています。解決策をご教授願いたいです。

該当のソースコード

UPDATEするソースコードです。
C#
cn.Open();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "UPDATE [dbo].[Table]" +
"SET 社員名 ='" + textBox2.Text + "'" +
"WHERE 社員番号 ='" + textBox1.Text + "'";
rd = cmd.ExecuteReader();
rd.Close();
cn.Close();

試したこと

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/09/17 12:43

DB が何かぐらいは書きませんか?
退会済みユーザー

退会済みユーザー

2020/09/17 12:51

初心者マークを付けることをお勧めします。
退会済みユーザー

退会済みユーザー

2020/09/18 00:43

質問者さん、無言になってしまいましたが、回答が役に立ったのか/立たなかったのか、役に立たなかったならどこが質問者さんの期待と違うのか、何か追加情報が必要なのかなど書いてください。とにかく無言は NG です。レスにはフィードバックを返してください。マナー的にも。
guest

回答1

0

ベストアンサー

DB サーバーが何か書いてないですが、LocalDB ではなかろうかと想像して・・・

LocalDB や SQL Azure の照合順序のデフォルトは SQL_Latin1_General_CP1_CI_AS となっていて、それに質問に書いてあるような N プレフィックスをつけないリテラルを設定すると文字化けします。

SQL 文をパラメータ化しましょう。パラメータ化してない SQL 文は議論するレベルにないと言っても過言ではないと思います。

パラメータ化すればも問題は解決するはずです。詳しくは以下の記事を読んでください。

パラメータ化の副次的な効用
http://surferonwww.info/BlogEngine/post/2016/06/04/use-parameterized-query-to-avoid-unexpected-character-corruption.aspx

投稿2020/09/17 12:50

編集2020/09/17 13:05
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

OMISAO

2020/09/17 13:15

拙い質問への回答ありがとうございます。 何分独学で勉強しているので、SQLのパラメーター化 というのも初めて知りました。
退会済みユーザー

退会済みユーザー

2020/09/17 13:22 編集

SQL インジェクション防止のためパラメータ化するのは必須です。参考書とかネットの記事でパラメータ化してないものがあったら問題外なので、今後一切信用しない・見ないことをお勧めします。 DB が何かを質問欄を編集して追記してください。
退会済みユーザー

退会済みユーザー

2020/09/18 00:42

質問者さん、無言になってしまいましたが、回答が役に立ったのか/立たなかったのか、役に立たなかったならどこが質問者さんの期待と違うのか、何か追加情報が必要なのかなど書いてください。とにかく無言は NG です。レスにはフィードバックを返してください。マナー的にも。
OMISAO

2020/09/18 02:13

レスポンス遅くなり申し訳ありません。 日中は別に用事があり反応が遅くなってしまいます。 回答に関しては解決しました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問