DOBON.NETプログラミング道掲示板

No34174 の記事


■34174 / )  Re[3]: ポルトガル語の登録
□投稿者/ 魔界の仮面弁士 大御所(1210回)-(2019/03/01(Fri) 10:39:35)
  • アイコンNo34173に返信(あばば無人君さんの記事)
    > 当案件ではINSERT文を発行する時は
    > string sql = "INSERT INTO Test (Id, Message) VALUES (1, N'ポルトガル語')";
    > cmd.CommandText = sql;
    > cmd.ExecuteNonQuery();
    > という風にパラメータを使用せず、直にVALUESの文字列まで含めたSQLを生成しています。


    妙ですね。

    当方環境で追試験してみましたが、下記の 4 や 5 では問題ありませんでした。
    6 については、アクセント記号が失われて
     "Com licenca, voce pode falar Portugues?"
    になってしまいましたけど…。


    // パターン4(非推奨)
    using (var cmd = con.CreateCommand())
    {
     cmd.CommandText = $"INSERT INTO Test (Id, Message) VALUES (4, N'{葡語}')";
     cmd.CommandType = CommandType.Text;
     cmd.ExecuteNonQuery();
    }

    // パターン5(非推奨)
    con.ExecuteScalar($"INSERT INTO Test (Id, Message) VALUES (5, N'{葡語}')");

    // パターン6(非推奨)
    con.ExecuteScalar($"INSERT INTO Test (Id, Message) VALUES (6, '{葡語}')");


    > この発行方式ですとnvarcharカラムのデフォルトのSqlDbTypeが「Text」になってしまう様ですね・・・。
    いや、そもそも SqlParameter を使っていないのなら、SqlDbType は関係ないです。


    > しかし質問しておいてなんですが、何故この様な知識をお持ちなのでしょうか?
    知識なんて無いですよ。検索もしていません。

    質問を受けて、実際に何パターンかで検証してみようと、
    先のコードを書いてみただけのことです。
    ポルトガル語がどんなものかも知りませんでしたので、
    挿入するサンプル文も、Google 翻訳で適当な文章をでっち上げただけですし。
違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -