こんばんは。
標記の件で勉強しています。
string userid = textBox1.Text;
に値を入力しボタンするとDBにinsertして、その際に同じUserID(DB上の)をinsertできないようにしたいのですが、下記ソースでうまくいきません。
下記はDBのUserIDをforeachでグルグル回して、そこにtextBox1に入力した
値と同じであれば、処理を中断したいのですが、まず、「colは繰り返し変数であるため割り当てることができません」と怒られます。
しかもぐるぐる回ると思われた、foreachが1回しか回らずに内容はDBの
列名である「UserID」が代入されてしまいます。
下記ソースは重複チェックの部分のみです。
SqlDataAdapter da = new SqlDataAdapter("SELECT UserID FROM user_master", cnc);
// データをキャッシュする DataSet のインスタンスを作成する
DataSet ds = new DataSet();
// データセットにデータを読み込む
da.Fill(ds, "user_master");
foreach (DataColumn col in ds.Tables["user_master"].Columns)
{
col = userid;
}
以上宜しくお願いします。
No.2ベストアンサー
- 回答日時:
実際のデータを取得するなら DataTableのRowsコレクションから取得しないといけませんよ
Columnsコレクションは DBのフィールドを返してくるように思います
DataSetのTables["user_master"]で取得したDataTableは本当に希望のデータを取得して来ているのでしょうか
DataRow row = tb.Rows[0];
if ( row["UserID"] == userid ) {
// 重複時の処理
}
といった具合になるかと思いますよ
row["UserID"]はObject型ですので比較のためにはキャストする必要があると思いますので適宜修正してください
redfox63さん
おはようございます。
下記ソースでいけました。
select文をUserIDから*にしたらできました。
わざわざコードを提示してもらったにもかかわらず、それを使用できずに
すいませんでした。できなかったところなどは今後の課題としておきます。
昨日というか今日の朝まで、ADOの本を読んでみました。
細切れの知識しかなかったため、接続非接続から始まり、コネクションプールやXMLとの関係など体系的に勉強して、かなり面白かったです。
(まだまだ勉強不足ですが…)これからも宜しくお願いします(__)
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM user_master", cnc);
DataSet ds = new DataSet();
da.Fill(ds, "user_master");
DataTable tb = ds.Tables["user_master"];
foreach (DataRow dr in tb.Rows)
{
if (userid == dr["UserID"].ToString())
{
MessageBox.Show("UserIDが重複しています");
return;
}
}
No.1
- 回答日時:
SQL文で登録済みのUserIDが有るかを確認したほうが現実的なのでは
#フィールド名などは適宜修正してください
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM user_master WHERE userID=" + userid.ToString(), cnc );
といった具合にしておいて
da.Fill( ds, "user_master");
if ( ds.Tables["user_master"].Rows.Count > 0 ) {
MessageBox.Show("UserIDが重複しています");
}
といった具合で判断可能なように思います
DB側で UserIDが文字列で定義されているなら
WHERE userID='" + userid.ToString() + "'"
などの変更が必要でしょう
この回答への補足
>redfox63さん
毎回ありがとうございます。
回答のもので試してみましたが、
ds.Tables["user_master"].Rows.Count
が常に「1」となり全部処理されてしまいます。
ちょっと変更してみました
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM user_master WHERE UserID='" + userid.ToString() + "'", cnc);
////データをキャッシュする DataSet のインスタンスを作成する
DataSet ds = new DataSet();
da.Fill(ds, "user_master");
DataTable tb = ds.Tables["user_master"];
//DataRowCollection rows = tb.Rows;
DataColumnCollection columns = tb.Columns;
for (int r = 0; r < columns.Count; r++)
{
}
@itより
これで(for文はいれてないですが)columnsが取得できるはず
なのですが、columns.Countが8となり(DBの列は8列です)
その値すら取得できません。どこかにUserID列の(2列目にあります)。
を追加してfor文で回して「=」だったら、messageboxとしたほうがいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(プログラミング・Web制作) どうしてもエラーが解決できません。 1 2022/07/23 04:32
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Listviewのデータを上から順番...
-
DataGridViewで表示に制限をつ...
-
.NET SqlDataReader のレコー...
-
【Excel VBA】先頭の「0」飛び...
-
GridViewにバインドせずにデー...
-
GridViewを自動的にスクロール...
-
yahoo天気の過去1ヶ月分のデー...
-
スプレッドシート 一括でQRコー...
-
【ASP.NET MVC】一覧編集画面
-
VBAでページ番号、ページ最終行...
-
コンパイルエラーSubまたは...
-
VB.NETで DataRow()を利用して...
-
データ数をカウントしたいのですが
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelVBAを使って、値...
-
count(*)で取得した値をJAVAの...
-
Excelのセルの色指定をVBAから...
-
表にフィルターをかけ、絞った...
-
select文の戻り値を変数に格納...
-
Accessのクエリで、replace関数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
GASでスプレッドシートの一番上...
-
GridViewにバインドせずにデー...
-
コンパイルエラーSubまたは...
-
.NET SqlDataReader のレコー...
-
VBAでページ番号、ページ最終行...
-
DataGridViewで表示に制限をつ...
-
MSFlexGridのデータ表示位置の設定
-
ASP C# データベースから1行取得
-
【ASP.NET MVC】一覧編集画面
-
C# データ配列から画像を作成す...
-
VBA ピボットテーブル自動更新
-
エクセルマクロ小数点桁数
-
VBによる可変長ファイルの読み書き
-
ASP.Net ObjectDataSource
-
GridViewを自動的にスクロール...
-
ListViewで条件によって表示を...
-
コンボボックス
おすすめ情報