- PR -

ExecuteNonQuery の戻り値

投稿者投稿内容
toppo
ベテラン
会議室デビュー日: 2003/10/28
投稿数: 89
お住まい・勤務地: 東京・池袋
投稿日時: 2006-03-23 17:35
引用:

nanbuさんの書き込み (2006-03-23 17:22) より:
南部です。

同じソースですが、

[環境]
VisualStudio2005
SQLServer2005

コード:
using(SqlConnection con = new SqlConnection("接続文字列"))
{
  SqlCommand cmd = con.CreateCommand();
  cmd.CommandText = //改行してません
    @"bulk insert UserTable 
     from 'd:workUserTable.txt' 
     with (FIELDTERMINATOR = ',',ROWTERMINATOR = 'n')"; 
					
  con.Open();
  int cnt = cmd.ExecuteNonQuery();
  Console.WriteLine(cnt);
  con.Close();
}

//UserTable
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[UserTable](
	[UserID] [int] IDENTITY(1,1) NOT NULL,
	[UserName] [varchar](max) COLLATE Japanese_CI_AS NULL,
 CONSTRAINT [PK_UserTable] PRIMARY KEY CLUSTERED 
(
	[UserID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF  

//UserTable.txtの中身
1,aaa
2,bbb
3,ccc
4,ddd



これで、4が返りました。




すみません、大事なことがもれていましたが、
環境は、
VisualStudio .NET 2003
SQLServer2000
.Net Framework 1.1
です。

.NET Framework 2.0
だと解決する問題なんでしょうかねぇ。

ちなみに、南部さんと同様のスキーマ、プログラム、テキストファイルで
試してみましたが、見事に8が返りました。
ほぼ同じとみなしても良いコードで
違う結果が返ってきているのでバージョンの差なのかもしれません。

南部さん
大変有益な情報ありがとうございました。

ただ、私の環境で、南部さんと同じ環境を
用意するのは容易ではないので、確認がとれないのが、気がかりですが。。。


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-23 17:47
引用:

toppoさんの書き込み (2006-03-23 17:35) より:

.NET Framework 2.0
だと解決する問題なんでしょうかねぇ。


ご安心ください。
私は、1.1, 2.0 ともに 8 が帰ってきましたよ。(;^ω^)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
toppo
ベテラン
会議室デビュー日: 2003/10/28
投稿数: 89
お住まい・勤務地: 東京・池袋
投稿日時: 2006-03-23 17:52
引用:

じゃんぬねっとさんの書き込み (2006-03-23 17:47) より:
引用:

toppoさんの書き込み (2006-03-23 17:35) より:

.NET Framework 2.0
だと解決する問題なんでしょうかねぇ。


ご安心ください。
私は、1.1, 2.0 ともに 8 が帰ってきましたよ。(;^ω^)





安心しました。。
ということは、SQLServer2000と2005の内部動作の差異によるもの
と推測できますね。

それとも何か見落としがあるのでしょうか。

一郎さんのトリガーというヒントが
何か関係あるのでしょうか。




スキルアップ/キャリアアップ(JOB@IT)