- PR -

Web上にSQLのデータを表示させるには

投稿者投稿内容
ash
会議室デビュー日: 2002/09/15
投稿数: 12
投稿日時: 2002-09-26 23:20
初めましてashと言います。
みなさんに教えてもらいことがあります。

WEB上で条件を満たすデータをSQL接続により
DataGridに表示させたいのですが
次のようなエラーが出てきて、上手くいきません。

'/WebApplication1' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------

オブジェクト参照がオブジェクト インスタンスに設定されていません。
説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。
エラーに関する詳細および例外の発生場所については、スタック トレースを
参照してください。

例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクト
インスタンスに設定されていません。

ソース エラー:

行 78: Dim myDataSet As New DataSet()
行 79:
行 80: SqlSelectCommand1.CommandText = "SELECT * FROM テーブル1"
行 81: SqlDataAdapter1.Fill(myDataSet)

ちなみに、
ソースは
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim myDataSet As New DataSet()

SqlSelectCommand1.CommandText = "SELECT * FROM テーブル1"
SqlDataAdapter1.Fill(myDataSet)

With DataGrid1
.DataSource = myDataSet
.DataBind()
.Visible = True
End With
end sub

よろしくお願いします。
sou
ベテラン
会議室デビュー日: 2002/09/25
投稿数: 56
投稿日時: 2002-09-27 00:53
ashさん以下の2点が原因と考えられます。

・SqlCommandオブジェクトにSqlConnectionを渡していない。
・SqlDataAdapterオブジェクトにSqlCommandを渡していない。

以上の点を考慮に入れて書き直すと・・

Dim connectionString As String = "connectionStringを記入"
Dim sqlConnection As SqlConnection = New SqlConnection(connectionString)

Dim queryString As String = "SELECT * FROM テーブル1"
Dim SqlSelectCommand1 As SqlCommand = New SqlCommand(queryString, sqlConnection)

Dim SqlDataAdapter1 As SqlDataAdapter = New SqlDataAdapter(SqlSelectCommand1)
Dim myDataSet As DataSet = New DataSet

SqlDataAdapter1.Fill(myDataSet )
ash
会議室デビュー日: 2002/09/15
投稿数: 12
投稿日時: 2002-09-28 00:07
souさんレスありとうございます。

下記のコードを書いた場合、
Dim sqlConnection As SqlConnection = New SqlConnection(connectionString)
Dim SqlSelectCommand1 As SqlCommand = New SqlCommand(queryString, sqlConnection)
Dim SqlDataAdapter1 As SqlDataAdapter = New SqlDataAdapter(SqlSelectCommand1)
の3行の全て、As の後のSqlConnection,SqlCommand,SqlDataAdapterの3つとも
定義されていませんとエラーが出てきます。
また、別にコードとか書き加える必要があるのでしょうか?
よろしくお願いします。
sou
ベテラン
会議室デビュー日: 2002/09/25
投稿数: 56
投稿日時: 2002-09-29 12:27
名前空間が不足しているためですね。
下記のコードを付け足してください。

<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
ash
会議室デビュー日: 2002/09/15
投稿数: 12
投稿日時: 2002-09-30 21:47
2行のコードを加えると、そちらの方は無事に済みましたが、今度は、

'/WebApplication1' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------
ユーザー '(null)' のログインに失敗しました。
理由 : SQL Server の信頼関係接続に関連付けられていません。

ソース エラー:

行 98: Dim myDataSet As DataSet = New DataSet()
行 99:
行 100: SqlDataAdapter1.Fill(myDataSet) ←赤で書かれています。
行 101:
というエラーが出てきたのです。

で、ヘルプや本などをいろいろ調べてみて、
Microsoft SQL Server→Enterprise Managerを開き
使用しているサーバー名のプロパティの所で、セキュリティプロパティページの
混合モード (Windows 認証と SQL Server 認証)を選択してみたんですが、
それでもうまく行かないのです。

ちなみに、Dim connectionString As String = "connectionStringを記入"
の""内は、SqlConnection1のConnectionStringのプロパティの所をそのまま
写しているのですが・・・

いろいろ迷惑かけますが、よろしくお願いします。
sou
ベテラン
会議室デビュー日: 2002/09/25
投稿数: 56
投稿日時: 2002-10-01 00:41
connectionStringは以下のようになります。

Windows認証ならば
"server=server_name;database=database_name;trusted_connection=true"

SQL認証ならば
"server=server_name;database=database_name;user id=sa;password="

server_nameはashさんのSQL Serverのサーバー名。
database_nameはSQL Server上のデータベースの名前。
SQL認証の場合のidとpasswordはashさんの環境に
合わせて書き直してください。
ash
会議室デビュー日: 2002/09/15
投稿数: 12
投稿日時: 2002-10-01 22:20
ashです。

えーと、今度はエラーは出ずに無事に動いたのですが、肝心のデータが
表示されないのです。結局、DataGridのフォームだけしか表示されません。
ちなみに、データベースのユーザ名はsaで、権限の所でSELECTをチェック
入れています。
また、認証はSQL Server認証でアクセス許可を選択しています。


他に何か表示されない原因とかあるのでしょうか?
よろしくお願いします。
takeyan
会議室デビュー日: 2002/10/02
投稿数: 8
お住まい・勤務地: 東京
投稿日時: 2002-10-02 10:23
ashさん始めまして。

私も初めて.NETでWebアプリケーションの作成を行っていますが
以下のページが参考になると思いましたので、一読をお勧めします。

Microsoft SQL Server 2000 自習書シリーズ
http://www.microsoft.com/japan/sql/using/sqleval/Self_Doc.asp

[開発編]
11. ASP.NET を用いた Web アプリケーションと XML Web サービスの開発
12. ADO.NET によるデータベースプログラミング

最初は中々難しいかったですが、わかってくれば
意外とすんなり進んでいくものですので、
お互いがんばっていきましょう!

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