C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: DataSet設定に出てくる謎の値 @Param


(過去ログ 117 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■69041 / inTopicNo.1)  DataSet設定に出てくる謎の値 @Param
  
□投稿者/ Яアルビノフォックス (7回)-(2013/11/29(Fri) 15:43:19)

分類:[.NET 全般] 

visual Basic 2010、言語 c#でコーディングを行っているときに出る文字です。

dataGridViewを使用したいのでDatasetを作成して表示しているのですが、いざデータベースを更新しようとするとできません。
Updateコマンドを設定し忘れてたのですが、そのとき編集しようとすると謎の文字が出てきます。
つまり

UPDATE EQUIP //更新したいデータ項目が入ってるデータセット
 SET GoodsGroup=?,GoodsName=?
WHERE (GoodGroup=?,GoodsName=?)
としたいのですが、この通りに書くと

UPDATE EQUIP 
 SET GoodsGroup=@Param1,GoodsName=@Param2
WHERE (GoodGroup=@Param3,GoodsName=@Param4)
といった謎の文字に自動変換されてしまいます。

以前ADOでコードしたときは普通に?が入力できたのですが、これは一体何なんでしょうか?
そして解消法はあるのでしょうか?なお、INSURTのほうでも同様のものが出てきます。

よろしくお願いします。

引用返信 編集キー/
■69042 / inTopicNo.2)  Re[1]: DataSet設定に出てくる謎の値 @Param
□投稿者/ WebSurfer (95回)-(2013/11/29(Fri) 15:52:26)
No69041 (Яアルビノフォックス さん) に返信
> visual Basic 2010、言語 c#でコーディングを行っているときに出る文字です。
>
> dataGridViewを使用したいのでDatasetを作成して表示しているのですが、いざデータベースを更新しようとするとできません。
> Updateコマンドを設定し忘れてたのですが、そのとき編集しようとすると謎の文字が出てきます。
> つまり
>
> UPDATE EQUIP //更新したいデータ項目が入ってるデータセット
>  SET GoodsGroup=?,GoodsName=?
> WHERE (GoodGroup=?,GoodsName=?)
> としたいのですが、この通りに書くと
>
> UPDATE EQUIP 
>  SET GoodsGroup=@Param1,GoodsName=@Param2
> WHERE (GoodGroup=@Param3,GoodsName=@Param4)
> といった謎の文字に自動変換されてしまいます。
>
> 以前ADOでコードしたときは普通に?が入力できたのですが、これは一体何なんでしょうか?
> そして解消法はあるのでしょうか?なお、INSURTのほうでも同様のものが出てきます。
>
> よろしくお願いします。
>

何をどうやったら変換されたのか知りませんが、@ とか ? はクエリの
パラメータ化の際の命名規則の一つです。

クエリをパラメータ化するというのはリテラルの部分をプレースホル
ダを使って記述することです。SQL Server の例では以下のようにな
ります。

SELECT id, Product FROM TableA WHERE Category=@Category

プレースホルダの構文はデータソースに依存します。SQL Server の場
合は @parametername 形式の名前付きパラメータが使用されます。

OleDB の場合は、疑問符 (?) で指定される位置パラメーターマーカー
が使用されます。

パラメーターおよびパラメーターのデータ型の構成 (ADO.NET)
http://msdn.microsoft.com/ja-jp/library/yy6y35y8%28v=vs.100%29.aspx
引用返信 編集キー/
■69051 / inTopicNo.3)  Re[1]: DataSet設定に出てくる謎の値 @Param
□投稿者/ WebSurfer (96回)-(2013/11/30(Sat) 13:53:48)
No69041 (Яアルビノフォックス さん) に返信
> visual Basic 2010、言語 c#でコーディングを行っているときに出る文字です。
>
> dataGridViewを使用したいのでDatasetを作成して表示しているのですが、いざデータベースを更新しようとするとできません。
> Updateコマンドを設定し忘れてたのですが、そのとき編集しようとすると謎の文字が出てきます。

追加情報です。

自力でコードを書いて問題にはまっているようにお見受けしますが、
型付 DataSet + TableAdapter のコードを Visual Studio のウィザー
ドを使って自動生成して使うことをお勧めします。

そうすれば、@ とか ? も Visual Studio が自動生成するコードに含
めてうまく処置してくれます。

以下のページの図に示されているような構成のアプリケーションを、
ほぼコーディングレスで作ることができます。

Visual Studio でのデータへの接続の概要
http://msdn.microsoft.com/ja-jp/library/wxt2cwcc(VS.80).aspx


具体的な手順は以下のページが参考になると思います。(VB.NET の
チュートリアルもあります)

10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
http://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688

上記は、外部キー制約がかかった二つのテーブルを扱う場合ですが、
単一テーブルならさらに簡単で、一行も自力でコードを書かないで実
装できると思います。
引用返信 編集キー/
■69072 / inTopicNo.4)  Re[2]: DataSet設定に出てくる謎の値 @Param
□投稿者/ Яアルビノフォックス (8回)-(2013/12/02(Mon) 09:53:33)
No69051 (WebSurfer さん) に返信
> 自力でコードを書いて問題にはまっているようにお見受けしますが、
> 型付 DataSet + TableAdapter のコードを Visual Studio のウィザー
> ドを使って自動生成して使うことをお勧めします。
>
> そうすれば、@ とか ? も Visual Studio が自動生成するコードに含
> めてうまく処置してくれます。

返信遅くなって申し訳ありませんでした。

データベースへの処理はLINQ to SQLを使用するという指定があったためADOが使えないのです。
(dataGridViewは表出力するときに見やすいので勝手に使ってるだけ)
色々調べてみたのですが時間が迫っていたこともあり、もう面倒なのでこんな処理を行いました。

Equip NewEquip = new Equip();
NewEquip.GoodsGroup = NewEquip.GoodsGroup = (int)groupBox.SelectedValue;
NewEquip.GoodsName = goodsBox.Text;

つまり直で入力です。項目が26項目ある上datetimepickerやらcommandBoxやらあるのでとんでもなく面倒ですが。
スマートじゃないですねぇ・・・SQL使うにしても構文量があまり変わらんので簡単なほうにしています。

今回は使用しませんでしたが、後の技術のため参考にさせていただきます。
わざわざ追記までしていただいてありがとうございました。これにて解決とさせていただきます。
解決済み
引用返信 編集キー/
■69073 / inTopicNo.5)  Re[3]: DataSet設定に出てくる謎の値 @Param
□投稿者/ WebSurfer (98回)-(2013/12/02(Mon) 11:05:59)
No69072 (Яアルビノフォックス さん) に返信
> データベースへの処理はLINQ to SQLを使用するという指定があった

今後は、そういうことは、お互いの時間の無駄を避けるため、一番最初の質問の
一番上に書いておくようお願いします。


#ところで、データベースは Access のような感じですが、LINQ TO SQL は
#基本的に SQL Server しかサポートしてないのでは?

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -