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

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

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

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

ADO.NET

ADO.NETは.NET Frameworkで各種データベースへの統一された接続機能を提供するソフトウェアコンポーネントの集合です。

解決済

ADO.NETでUpdateができない

FacePanel
FacePanel

総合スコア0

C#

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

ADO.NET

ADO.NETは.NET Frameworkで各種データベースへの統一された接続機能を提供するソフトウェアコンポーネントの集合です。

2回答

0評価

0クリップ

28閲覧

投稿2018/10/07 08:45

編集2022/01/12 10:58

Visual Studioのバージョンは、Microsoft Visual Studio Community 2017 Version 15.8.4です。
下記のコードでは、SQL ServerのUpdateが出来ませんでした。
結局は、SQL ServerにあるArticlesテーブルのUpdateTimeカラムの値をすべての行ごとnullにしたいのです。
最初のコードブロックの部分内の処理が出来ずに困っています。更新の仕方に間違いがありそうです。
どうしたらよいか教えて下さい。よろしくお願いします。

C#

public void DeleteUpdateTime(DataTable table) { using (SqlConnection conn = new SqlConnection(GetConnectionString(databasename))) using (da = GetDataAdapter(conn, table.TableName)) { conn.Open(); cmd = new SqlCommand(SelectTable(table.TableName)); da = new SqlDataAdapter { SelectCommand = cmd }; cmd = new SqlCommand("UPDATE Articles SET UpdateTime = null;", conn); da.UpdateCommand = cmd; da.Update(table); } } // 下記は、参考程度にしてください。問題は上のコードです。↑ public DataTable GetTheArticle(SqlConnection conn, DataSet ds) { // ID, Name, InputTime, UpdateTimeのカラムを持ったArticlesテーブル(StrArticles)のUpdateTimeをnullにしようとしてます。 string sSelect = "SELECT ID, Name, InputTime, UpdateTime FROM Articles ORDER BY ID;"; using (conn = new SqlConnection(GetConnectionString(dataBaseName))) { cmd = new SqlCommand(sSelect, conn); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dTbl = new DataTable(StrArticles); da.Fill(dTbl); dTbl.PrimaryKey = new DataColumn[] { dTbl.Columns["ID"] }; return dTbl; } } private string GetConnectionString(string dataBaseName) { string sConn = ""; switch (authenticName) { case WinAuthentic: sConn = "Data Source=" + serverName + ";Database=" + dataBaseName + ";Integrated Security=true;"; break; case SqlAuthentic: sConn = "Persist Security Info=False;User ID=" + loginName + ";Password=" + loginPass + ";Initial Catalog=" + dataBaseName + ";Server=" + serverName + ";"; break; } return sConn; }

// さらに下記のように、DataSetを追加して、また、要らないと思われるコードを削ってみましたが、やはりだめでした。

C#

public void DeleteUpdateTime(DataTable table) { // 今度は、こうやって非接続型での処理を使用との意向を明確にするため、DataSetを明示してみましたが、やはりだめでした。 DataSet ds = new DataSet(); string sTable = table.TableName; using (SqlConnection conn = new SqlConnection(GetConnectionString(databasename))) using (SqlDataAdapter da = new SqlDataAdapter(SelectTable(sTable), conn)) { // conn.Open(); da.Fill(ds, sTable); cmd = new SqlCommand("UPDATE Articles SET UpdateTime = null;", conn); da.UpdateCommand = cmd; da.Update(table); } } // なお、tableには、ArticlesというTableのデータがすべて格納されていますので、接続状態などは問題なさそうです。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

SurferOnWww
SurferOnWww

2018/10/07 09:19

どこがどう期待と違う結果になるのか詳しく書いてください。エラーメッセージが出ているならそれをコピペして質問欄に書いてください。
FacePanel
FacePanel

2018/10/07 09:39

まず、エラーにはなりません。最後の da\.Update\(table\); のところも、処理出来てよさそうなのですが、データベースは、変わらぬままです。で、どうしたらよいのだろう、となりました。
SurferOnWww
SurferOnWww

2018/10/07 14:54 編集

> DataSetを追加して、また、要らないと思われるコードを削って ← 回答に書いたこと、全然理解してないですよ。ここでは改行もできないので回答欄のコメントに書きます。
FacePanel
FacePanel

2018/10/07 14:53

DataSet を使ってそこへの変更をデータベースに反映するのが非接続型と理解しましたが、おかしいかな?DataReaderは使っていないわけだし。なんだろ?
SurferOnWww
SurferOnWww

2018/10/07 14:55

話が通じてませんよ。DataSet は関係ない。回答欄のコメントを見てください。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

ADO.NET

ADO.NETは.NET Frameworkで各種データベースへの統一された接続機能を提供するソフトウェアコンポーネントの集合です。