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

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

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

Re[1]: 登録して更新するとデータがへん。


(過去ログ 17 を表示中)

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

■6447 / inTopicNo.1)  登録して更新するとデータがへん。
  
□投稿者/ yk (1回)-(2007/08/11(Sat) 22:07:04)

分類:[C#] 

VisualC#2005で開発しています。
ボタンを押された時にデータを登録し、登録したデータを一覧として画面に表示しています。
一度一覧に表示されたデータは、カラムの一部を更新します。(一覧に表示された回数を数値で管理)

2度目ボタンを押した場合、一度一覧に表示されたデータかどうかチェックのために検索をするのですが
正しいデータが取得できません。(1に更新されてるはずが0が取得される)

DBはSQLServer、登録と更新は同じテーブルです。登録のみ、更新のみの場合はうまくいきます。
データベースには正しいデータが登録されています。
SQL文はあっています。試しにManagement Studio Expressで実行すると正しいデータがとれます。
なぜかプログラム上で、登録、更新を行うと取得データがおかしくなります。
おかしくなるのは、更新したカラム部分だけで他のカラムは正しいデータです。
原因がさっぱりわかりません。


以下、簡略したソース

public partial class testForm : Form{
public void Btn_Click(object sender, EventArgs e){
Bclass b = new Bclass();
b.insertData();
b.selectData();
b.updateData();
//画面表示処理
・・・
}
}

class Bclass{
//登録処理
public void insertData()
{
using (TransactionScope txnScope = new TransactionScope())
{
using (SqlConnection cn = new SqlConnection())
{
SqlCommand com = null;
try
{
cn.ConnectionString = "接続文字列";
cn.Open();
using (com = new SqlCommand())
{
com.Connection = cn;
com.CommandText = "SQL文";
com.ExecuteNonQuery();
}
}
catch (Exception ex)
{
}
finally
{
if (com != null)
{
com.Dispose();
}
if (cn != null)
{
cn.Close();
cn.Dispose();
}
}
txnScope.Complete();
}
}
}

//更新処理
public void updateData()
{
using (TransactionScope txnScope = new TransactionScope())
{
using (SqlConnection cn = new SqlConnection())
{
SqlCommand com = null;
try
{
cn.ConnectionString = "接続文字列";
cn.Open();
using (com = new SqlCommand())
{
com.Connection = cn;
com.CommandText = "SQL文";
com.ExecuteNonQuery();
}
}
catch (Exception ex)
{
}
finally
{
if (com != null)
{
com.Dispose();
}
if (cn != null)
{
cn.Close();
cn.Dispose();
}
}
}
txnScope.Complete();
}
}


//検索処理
public void selectData()
{
SqlConnection cn = new SqlConnection();
SqlDataReader dr = null;
SqlCommand com = null;
try
{
cn.ConnectionString = "接続文字列";
cn.Open();
com = new SqlCommand("SQL文", cn);
dr = com.ExecuteReader();
while (dr.Read())
{
System.Diagnostics.Debug.WriteLine(dr.GetInt32(0));
System.Diagnostics.Debug.WriteLine(dr.GetInt32(1));//←更新したはずがデータが不正
System.Diagnostics.Debug.WriteLine(dr.GetInt32(2));//←更新したはずがデータが不正
System.Diagnostics.Debug.WriteLine(dr.GetInt32(3));
}
}
catch (Exception ex)
{
}
finally
{
if (dr != null)
{
dr.Close();
dr.Dispose();
}
if (com != null)
{
com.Dispose();
}
if (cn != null)
{
cn.Close();
cn.Dispose();
}
}
}
}

引用返信 編集キー/
■6462 / inTopicNo.2)  Re[1]: 登録して更新するとデータがへん。
□投稿者/ はつね (225回)-(2007/08/14(Tue) 21:16:34)
No6447 (yk さん) に返信
> DBはSQLServer、登録と更新は同じテーブルです。登録のみ、更新のみの場合はうまくいきます。
> データベースには正しいデータが登録されています。
> SQL文はあっています。試しにManagement Studio Expressで実行すると正しいデータがとれます。
> なぜかプログラム上で、登録、更新を行うと取得データがおかしくなります。
> おかしくなるのは、更新したカラム部分だけで他のカラムは正しいデータです。
> 原因がさっぱりわかりません。
>
>
> 以下、簡略したソース
>
> public partial class testForm : Form{
> public void Btn_Click(object sender, EventArgs e){
> Bclass b = new Bclass();
> b.insertData();
> b.selectData();
> b.updateData();
> //画面表示処理

insertしてselectしたあとにupdateしているのに、updateした部分が正しくselectできないという事をいっているのでしょうか?

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -