• 締切済み

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()

みんなの回答

noname#259269
noname#259269
回答No.2

>型 'System.Data.DataView' のオブジェクトを と出てるんで、 Dim Rs As System.Data.DataView = DirectCast(SqlDataSource1.Select(DataSourceSelectArguments.Empty), System.Data.DataView) でしょう。 あとは、Rs を For Each なりでループ処理してください。 http://msdn.microsoft.com/ja-jp/library/system.data.dataview(v=vs.80).aspx

回答No.1

こんにちわ。 まず、どのイベント時に行っている処理か明記しましょう。 >e.Cell.Controls.Add(New LiteralControl("<br />" & String.Format("{0}", Rs.GetString(0)))) の「e」はイベントによってどんなものが設定されるのか異なるはずです。 ><br /> がある時点でASP.NETだという事でしょうかね? DBがACCESSなのに「SqlClient.SqlDataReader」は使用できないんじゃないでしょうか? それと、キャストするならばCTypeではなく、この場合DirectCastの方がいいように思います。 データテーブルに格納してもいいんじゃないでしょうか? Dim dt As DataTable dt = SqlDataSource1.DataSource

関連するQ&A

  • 【ASP.NET】DataSetをSqlDataSourceに組み込めますか?

    ASP.NET Visual Studio 2005で開発を行っています。 GridViewのページングの機能を使用するには、「SqlDataSource」や「ObjectDataSource」を使用しないと有効にならないと思いますが、データベースがDataSetになっています。 この状態から、GridViewにデータをバインドし、ページングを有効にさせるには、どうしたらよいでしょうか?? SqlDataSourceにDataSetを持っていくという方法が調べても、分かりませんでした。 以下が使用しているソースです。 これですと、ページングが有効にならず、エラーになる状態です。 ============================================= Dim dSet As Data.DataSet = New Data.DataSet("データ") Dim dTbl As Data.DataTable Dim dRow As Data.DataRow dTbl = dSet.Tables.Add("データ") dTbl.Columns.Add("aaa", Type.GetType("System.String")) dRow = dTbl.NewRow() dRow("aaa") = "bbb" dTbl.Rows.Add(dRow) Me.GridView1.DataSource = dTbl Me.GridView1.DataBind() ====================================== どうぞ、宜しくお願いします。

  • GridViewにバインドせずにデータを表示する方法

    環境:VS2008&VB.NET&ASP GridViewに手動でテーブルからデータを読みデータバインドせず DBの値を表示する方法を考えていますがうまくいかず困っています。 (データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。) 初心者のため見当違いなことをしているかもしれませんが それも含めまして質問させていただきます。 質問1 そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。 質問2 以下のコードで試しましたが「GridView1.Controls(0).Controls.Add(row1)」でExeptionが発生してしまいました。 手順に不適格な箇所があるのでしょうか。 strSql = "SELECT * FROM Data_Table" Using connection As New SqlClient.SqlConnection(cnStr) Dim command As New SqlClient.SqlCommand(strSql, connection) connection.Open() Dim dr As SqlClient.SqlDataReader = command.ExecuteReader While (dr.Read = True) 'データあり str1 = dr("data1") str2 = dr("data2") str3 = dr("data3") End If connection.Close() Dim item1 As DataGridItem item1 = New DataGridItem(-1, -1, ListItemType.Item) Dim cell0 As TableCell = New TableCell item1.Cells.Add(cell0) Dim cell1 As TableCell = New TableCell item1.Cells.Add(cell1) Dim cell2 As TableCell = New TableCell item1.Cells.Add(cell2) Dim row1 As New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal) row1.Cells.Add(cell0) row1.Cells.Add(cell1) row1.Cells.Add(cell2) GridView1.Controls(0).Controls.Add(row1) End While End Using エラーの内容 System.ArgumentOutOfRangeException はユーザー コードによってハンドルされませんでした。 Message="指定された引数は、有効な値の範囲内にありません。 パラメータ名: index" お力添えをよろしくお願い致します。

  • 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

  • C#でのSQLへのアクセスについて

    SQL Serverのテーブルをコンソール上に表示する為のコードを書いたのですが SqlConnection SqlCommand SqlDataReader に対してエラーが出しまい、修正方法が分からず、どなたか教えて頂けないでしょうか? 【ソースコード】 using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using Microsoft.Data.SqlClient; static void Main(string[] args) { string connectionString = "Data Source=○○;Initial Catalog=○○;User ID=○○;Password=○○;"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlCommand command = new SqlCommand("SELECT * FROM [○○]", connection)) using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(reader["column1"]); Console.WriteLine(reader["column2"]); } } } }

  • データベースへのアクセスエラーについて

    はじめまして!大学でデータベースを学んでいるのですが、以下のプログラムを実行した際、「式の型が一致しません」というエラーが出ます。またアクセスしているテーブルmeiboにはフィールドに,IDと名前shakai,eigoなどのテーブルには,IDと得点(それぞれの科目の名前)がフィールドにあります。 よろしければ、ご回答よろしくお願いいたします。 import java.io.*; import java.sql.*; public class Ex1 { public static void main(String[] args) { Connection conn = null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection("jdbc:odbc:ex1"); Statement stmt = conn.createStatement(); BufferedReader r = new BufferedReader(new InputStreamReader(System.in), 1); System.out.print("学籍番号を入力してください : "); System.out.flush(); String number = r.readLine(); String select = "SELECT * from meibo,kokugo,sansuu,shakai,rika,eigo " + "where meibo.ID=kokugo.ID=sansuu.ID=shakai.ID=rika.ID=eigo.ID"; ResultSet rs = stmt.executeQuery(select); while(rs.getString("ID")!=number) rs.next(); // System.out.printf("%s\t",rs.getString("name")); System.out.printf("%s\t"," 国語 "+rs.getString("kokugo")); System.out.printf("%s\t"," 算数 "+rs.getString("sansuu")); System.out.printf("%s\t"," 社会 "+rs.getString("shakai")); System.out.printf("%s\t"," 理科 "+rs.getString("rika")); System.out.printf("%s\n"," 英語 "+rs.getString("eigo")); stmt.close(); conn.close(); } catch (Exception e) { System.out.println(e); } } }

  • javaでデータベース(mysql)からデータを取得しJTableにinsertする方法が分かりません。

    JLabelになら分かるのですがJTableのほうがよく分からないのです。 また、どのように記述すればよいのでしょうか? 参考までにJLabelの方を乗せておきます。 すべては自分の勉強不足が原因なのですが、お分かりになる方はお知恵をお貸し下さい。 private void displayData(){ try { MainMenu mainMenu = new MainMenu(); sqlStr = mainMenu.getSendsqlstr(); System.out.println(sqlStr); //ドライバクラスをロードする Class.forName("com.mysql.jdbc.Driver");//org.gjt.mm.mysql.Driverこっちの可能性もあり //MySQLに接続 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/nelfsystem", "root", "root"); //ステートメント生成 pstmt = (PreparedStatement) con.prepareStatement(sqlStr); //SQL文実行 rs = pstmt.executeQuery(sqlStr); rs.first(); // 最初の行に移動 jLabel30.setText("" + rs.getInt("member_id")); jLabel31.setText(rs.getString("member_name")); jLabel32.setText(rs.getString("member_furigana")); jLabel33.setText(rs.getString("birth_day")); jLabel34.setText(rs.getString("sex")); jLabel36.setText(rs.getString("telephone")); jLabel37.setText(rs.getString("telephone_2")); jLabel29.setText(rs.getString("zipcode")); jLabel38.setText(rs.getString("address")); jLabel39.setText(rs.getString("address_2")); jLabel41.setText(rs.getString("douki")); jLabel40.setText(rs.getString("e_mail")); jTextArea2.setText(rs.getString("remarks")); } catch(Exception ex){ System.out.println("Error:" + ex.toString() + ex.getMessage()); } }

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

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

  • 関数テンプレート(構造体付き)

    初歩的なことだと思うのですが、、 構造体の中の型に汎用性をもたせたいのですが、 template <typename DATA> struct cell { DATA data; DATA *next; }; cell<DATA> *insert(DATA x, cell<DATA> *init ) { cell<DATA> *p; r =new cell<DATA>; このような形かなと思ったのですが、エラーがかなりでます。 リストのプログラムで、挿入されるデータに汎用性をもたせたいのです。 お願いします。

  • SQLから取得した値をEXCELへ表示したい

    お世話になります。 お分かりになる方教えてください。 VB.NETでSQLに繋いで画面から入力されたテキストボックスの値をパラメータに 結果がワークテーブルに格納されるストアドを呼び出します。 ストアドの結果(ワークテーブルの値)をSELECTして 今はダイアログに仮に出している状態です。 それからOLEDB接続を使ってEXCELにデータを表示したい (セルに結果を貼り付けたい)のですが データのやり取りがうまくいきません。 System.Data.SqlClient.SqlDataReaderで取得した値をSystem.Data.OleDb.OleDbDataReaderに移したいのですが よくわかりません。 どなたか教えていただけませんでしょうか。 よろしくお願いします。

  • 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) ・ ・ ・ となり、データベースの登録に失敗しましたとなります。 初歩的なことでもうしわけないのですが、よろしくお願いします。

専門家に質問してみよう