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

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

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

DB接続更新時におけるエラー

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

■97686 / inTopicNo.1)  DB接続更新時におけるエラー
  
□投稿者/ か (1回)-(2021/06/29(Tue) 14:07:10)

分類:[.NET 全般] 

現在、DBから取得したデータを一覧表示し、削除機能などでDBのデータを削除できるといったシステムを開発しています。
DBにはあらかじめ固定で200件データがはいっており、カラム[No]をKeyにしています。
[No]は1〜200の通し番号で保存しておきたいのですが、システムで削除処理を行った場合、[No]がずれてしまいます。

現在実装しようとしている処理としましては、

例えば[No]の1を削除した場合、DBに残るデータは[No]2〜200となりますが、データは常に200件入れておきたい為、[No]の201を末尾に足す。
するとDBには[No]2〜201の200件のデータが残る。
[No]は1〜200にしておきたいので、Noの部分だけを1〜200で書き換えて再びDBを更新。

このような処理を書いているのですが、以下の例外が出てしまいます。

【例外内容】
 System.Data.Entity.Core.EntityException
 The underlying provider failed on Commit.

 内部例外
 ArgumentNullException:値を Null にすることはできません。

対処法や別のやり方等ありましたらお教えいただきたいです。

引用返信 編集キー/
■97687 / inTopicNo.2)  Re[1]: DB接続更新時におけるエラー
□投稿者/ か (2回)-(2021/06/29(Tue) 14:08:09)
追記:
 DBとのやりとりはEntityFrameworkを使用しています。
引用返信 編集キー/
■97688 / inTopicNo.3)  Re[1]: DB接続更新時におけるエラー
□投稿者/ WebSurfer (2275回)-(2021/06/29(Tue) 14:38:21)
No97686 (か さん) に返信

DB は何かと開発環境ぐらいは書けませんか
SQL Server? MySQL? Access? SQLIte?
.NET Framework or Core?

> 例えば[No]の1を削除した場合、DBに残るデータは[No]2〜200となりますが、データは常に200件入れておきたい為、[No]の201を末尾に足す。
> するとDBには[No]2〜201の200件のデータが残る。
> [No]は1〜200にしておきたいので、Noの部分だけを1〜200で書き換えて再びDBを更新。

そもそもどういう順番で番号を振るのですか?
引用返信 編集キー/
■97689 / inTopicNo.4)  Re[2]: DB接続更新時におけるエラー
□投稿者/ か (4回)-(2021/06/29(Tue) 15:17:20)
No97688 (WebSurfer さん) に返信
> ■No97686 (か さん) に返信
>
> DB は何かと開発環境ぐらいは書けませんか
> SQL Server? MySQL? Access? SQLIte?
> .NET Framework or Core?

DBはSQLサーバーで、開発環境は.NET Frameworkです。
>
>>例えば[No]の1を削除した場合、DBに残るデータは[No]2〜200となりますが、データは常に200件入れておきたい為、[No]の201を末尾に足す。
>>するとDBには[No]2〜201の200件のデータが残る。
>>[No]は1〜200にしておきたいので、Noの部分だけを1〜200で書き換えて再びDBを更新。
>
> そもそもどういう順番で番号を振るのですか?

無条件に一番上の行から順に1番から200番まで振っています。
引用返信 編集キー/
■97690 / inTopicNo.5)  Re[3]: DB接続更新時におけるエラー
□投稿者/ WebSurfer (2276回)-(2021/06/29(Tue) 15:49:13)
No97689 (か さん) に返信

> DBはSQLサーバーで、開発環境は.NET Frameworkです。

×: SQLサーバー
〇: SQL Server

>>そもそもどういう順番で番号を振るのですか?
>
> 無条件に一番上の行から順に1番から200番まで振っています。

「上から」ってなんですか? SQL Server のレコードに上も下もありませんけど。
引用返信 編集キー/
■97693 / inTopicNo.6)  Re[3]: DB接続更新時におけるエラー
□投稿者/ WebSurfer (2278回)-(2021/06/30(Wed) 14:50:55)
No97689 (か さん) に返信

> 無条件に一番上の行から順に1番から200番まで振っています。

「一番上の行から順に」の意味が分かっていませんが・・・

INSERT した順に番号を振りたいということなら、主キーを IDENTITY にして、SELECT クエリで抽出するとき
ORDER BY [主キー] で順番に並べ、ROW_NUMBER とかで連番を振るというのではどうですか?

ROW_NUMBER (Transact-SQL)
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/row-number-transact-sql?view=sql-server-ver15

引用返信 編集キー/
■97698 / inTopicNo.7)  Re[4]: DB接続更新時におけるエラー
□投稿者/ か (5回)-(2021/07/01(Thu) 16:17:07)
No97693 (WebSurfer さん) に返信
> ■No97689 (か さん) に返信
>
>>無条件に一番上の行から順に1番から200番まで振っています。
>
> 「一番上の行から順に」の意味が分かっていませんが・・・
>
> INSERT した順に番号を振りたいということなら、主キーを IDENTITY にして、SELECT クエリで抽出するとき
> ORDER BY [主キー] で順番に並べ、ROW_NUMBER とかで連番を振るというのではどうですか?
>
> ROW_NUMBER (Transact-SQL)
> https://docs.microsoft.com/ja-jp/sql/t-sql/functions/row-number-transact-sql?view=sql-server-ver15
>
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ