• ベストアンサー
  • 困ってます

ADO.NETへの対応

ADO.NETへの対応をしています。接続先がIBM DB2を使用しています。 クラスは、System.Data.Odbcは使用するべきでしょうか? それとも、System.Data.SqlClientを使用するべきでしょうか? 宜しくお願いします。

noname#187796
noname#187796

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数747
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

SqlClientはSQL Server用のADO.NETプロバイダです。 DB2用のADO.NETプロバイダは,IBMが用意したものが存在します。 SITE: DB2 and .NET FAQs - Wikis http://www.ibm.com/developerworks/wikis/display/DB2/DB2%20and%20.NET%20FAQs から, http://www.ibm.com/software/data/db2/ad/deploy.html Data Server Client Packages (GA level) IBM Data Server Driver Package (DS Driver) の順で辿れば取得可能なようです。 原則的に,ネイティブのADO.NETプロバイダの方が,ODBCプロバイダよりも性能が良いと思われるため, 可能であればネイティブのADO.NETプロバイダの利用をお勧めします。 # ODBCプロバイダだと*.configとODBC自体の設定の2箇所に設定が分散しますし。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • ADO.NETでOracleへの接続について

    ADO.NET(VB2005)でoracle9iに接続したいのですが、 標準データプロバイダのSystem.Fata.OracleClientが 出てきません。 何か、特別な参照をさせる必要があるのでしょうか? ちなみに、SQLサーバー用のSystem.Data.SqlClientは 出ています。 宜しく御願いします。

  • SQLSERVERの接続方法を教えて下さい

    Visual Studio C# Windows CE環境でSQLSERVERに接続する方法を教えて頂きたいです。 System.Data.SqlClient.SqlConnection cSqlConnection = new System.Data.SqlClient.SqlConnection("接続文字列"); cSqlConnection.Open(); とすると実行時にエラーになります。

  • IBM UDB2をMS-ACCESS97で利用するには?

    IBMのUDB2をDBMSとしたC/Sシステムを構築しようとしていますが、クライアントPCのACCESS97から利用する場合、ODBC接続すればよいと思うのですが、その場合、クライアントPCにDB2のクライアントソフトのようなものが必要になるのでしょうか? SQL-SERVERの場合、ODBCの設定のみで特別なソフトは必要無いと思いますが、DB2の場合はどうなのでしょうか?

  • データベースへの接続方法(どれがよいのか?)

    VB.NETを使用して、SQLServer(2000 or 2005)やORACLE(8 or 9 or 10)に接続しようと思います。 VB.NETの場合、下記の4つの方法(私はこれしか分かりません)がある と思うのですが、どれで接続した方がよいのでしょうか? (総合的にどれがよいのかを知りたいのです) 質問が抽象的すぎて申し訳ありません。 ---------------------------------------------------------------------------------- ◎ = 推奨 ○ = まあまあ推奨 △ = あまり推奨しない × = 接続できない ? = 不明 1つ目: ADODB.Connection(SQLServer=○、ORACLE=○) 2つ目: System.Data.SqlClient.SqlConnection(SQLServer=◎、ORACLE=?) 3つ目: System.Data.OleDb.OleDbConnection(SQLServer=○、ORACLE=○) 4つ目: System.Data.Odbc.OdbcConnection(SQLServer=○、ORACLE=○)

  • SqlServerとC#の連携問題 タイムアウト

    C#+SqlServerでC/Sアプリを作りました。 しかし、現在下記の問題があります。 ご存知の方いらっしゃいましたら、教えてください。 クライアント側はデータをサーバー側に送信します。 サーバー側はデータを受信しながらSqlServerに保存します。 軽量のデータでやるなら、問題は出ません。 しかし、8GBのデータでやると、その途中、いつも下記のエラーが出ます。 Class:11 Index #0 Message: タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。 LineNumber: 0 Source: .Net SqlClient Data Provider Procedure: System.Data.SqlClient.SqlException: タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。 場所 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 場所 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 場所 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) 場所 System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj) 場所 System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() 場所 System.Data.SqlClient.TdsParserStateObject.ReadBuffer() 場所 System.Data.SqlClient.TdsParserStateObject.ReadByte() 場所 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 場所 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 場所 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 場所 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 場所 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 場所 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 場所 System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) 場所 System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) 場所 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) 場所 System.Data.Linq.ChangeDirector.StandardChangeDirector.DynamicInsert(TrackedObject item) 場所 System.Data.Linq.ChangeDirector.StandardChangeDirector.Insert(TrackedObject item) 場所 System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) 場所 System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) 場所 System.Data.Linq.DataContext.SubmitChanges() その他:  SqlServer2008 R2  C# .Net3.5 WindowsServer2008 R2

  • DB2 CLIについて

    以下内容について認識に誤りがあればご指摘頂けないでしょうか?初心者なので的外れになっているかもしれません…なにとぞ宜しくお願い致します。 【質問1】   「組み込みSQL」「ODBC」「DB2 CLI」の3つに 限定するのであれば.以下組み合わせが想定 出来る事を確認させてください。   <1> 組み込みSQL + ODBC  <2> 組み込みSQL + DB2 CLI <3> 組み込みSQLのみ   <4> ODBCのみ   <5> DB2 CLIのみ 【質問2】  ODBCの場合、クライアント端末上でGUIにより   DB接続に関する設定をいろいろしなくてはいけ   ませんがDB2 CLIに関しても同様でしょうか?   DB2 CLIドライバのインストールだけでなく   ODBCのようにクライアント端末にて何か   明示的に設定をする必要はあるでしょうか?

  • 共通モジュールでDBへの接続と利用方法

    VB.net のモジュールの引数にについての質問です。 やりたい事はSQLServerへの接続およびSELCT文を実行させることです DB側へのセッションをモジュールで作成し、 それを元に、他のモジュールやクラスファイルで selectやinsertを動かしたいと思っていますが、うまくいきません 「ExecuteReader には接続が開かれていて使用可能なことが必要です。 現在の接続の状態は終了です」というエラーが出てしまいます。 おそらく戻り値のあたりがおかしいのかなと思うのですが、 解決策がわかりません。 Module Connect Dim cn As System.Data.SqlClient.SqlConnection Public Function Connection() Try cn = New System.Data.SqlClient.SqlConnection() 'SQL Server認証を利用して接続 cn.ConnectionString = _ "Data Source = " & ServerName & _ ";Initial Catalog = " & DBName & _ ";User ID = " & UserID & _ ";Password = " & password 'Windows認証を利用して接続 'cn.ConnectionString = _ ' "Data Source = " & ServerName & _ ' ";Initial Catalog = " & DBName & _ ' ";Integrated Security = SSPI" cn.Open() MessageBox.Show("接続されました") Catch ex As Exception MessageBox.Show(ex.ToString) End Try Return cn End Function End Module Public Sub ExecuteReaderTest() Try Dim cn As New System.Data.SqlClient.SqlConnection Connection() Dim hCommand As System.Data.SqlClient.SqlCommand = cn.CreateCommand() hCommand.CommandText = "SELECT ~~ " Dim cReader As System.Data.SqlClient.SqlDataReader = hCommand.ExecuteReader() hCommand.Dispose() ......

  • SQL Serverへの接続

    下記の環境で開発をすることになりました。 開発言語:Borland C++Builder Professional Ver 5.0 データベース:Microsoft SQL Server2005 SQL Serverの文献を購入したところ、SQL Server2005へ通信するアプリケーションの作成には「.NET Framework Data Provider for SQL Server (SqlClient)」が推奨と書いてあり、「System.Data.SqlClient名前空間を参照することにより一連のクラスを利用できます。」とあります。 そこで、色々調べたのですが、どうしても Borland C++ で System.Data.SqlClient名前空間を参照する方法がわかりません。 参考ソース、参考サイト、参考文献なんでもいいのでご存知の方がいましたら教えて下さい。 (VB.Net、C# などは色々なサイトがあったのですが・・・)

  • MS SQL Server 2005 express データベースに登録する際のエラー

    本についていた サンプルを動かそうとしてSQL server 2005 expressをインストールしたのですがサンプルデータベースに登録する際にDBエラーになって、うまくSQLServer 2005 Expressに接続できません。 エラーの内容は System.Data.SqlClient.SqlException:サーバーへの接続を確立しているときにエラーが発生しました。SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、SQL Serverの既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。 (provider: 名前付きパイプ プロバイダ, error: 40 - SQL Server への接続を開けませんでした) 場所 System.Data.SqlClient.SqlInternalConnection.OnError(SqlExceptionexception, Boolean breakConnection) 場所System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 場所 System.Data.SqlClient.TdsParser.Connect(Boolean& useFailoverPartner, Boolean& failoverDemandDone, String host, String failoverPartner, String protocol, SqlInternalConnectionTds connHandler, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject, Boolean aliasLookup) 場所 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) 場所 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity > identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) 場所 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) 場所 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) 場所 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) 場所 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) 場所 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 場所 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 場所 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 場所 System.Data.SqlClient.SqlConnection.Open() 場所 Seasar.Framework.Util.DataSourceUtil.GetConnection(IDataSource dataSource) ・ ・ ・ となり、データベースの登録に失敗しましたとなります。 初歩的なことでもうしわけないのですが、よろしくお願いします。

  • SqlDataSource内容を読込みたい

    SqlDataSourceの内容をコントロールを介さずに1件ずつ読み込みたいが 以下のエラーが表示されます。 どのようにしたらエラーを回避できるか教えてください。 DB:Access2000 OS:WinXP 開発:VS2005 型 'System.Data.DataView' のオブジェクトを 型 'System.Data.SqlClient.SqlDataReader' にキャストできません Dim Rs As Data.SqlClient.SqlDataReader Rs = CType(SqlDataSource1.Select(DataSourceSelectArguments.Empty), Data.SqlClient.SqlDataReader) Do While Rs.Read() e.Cell.Controls.Add(New LiteralControl("<br />" & String.Format("{0}", Rs.GetString(0)))) Loop Rs.Close()