• 締切済み

ASP.NETで Web.Configの定義がエラーになります。

Web.configに以下の定義 (フォームでSqlDataSouceを貼り付けて定義) <add name="TestdateConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\Test\App_Data\Test.mdb" providerName="System.Data.OleDb" /> 次にフォームのVB側で以下のサブルーチンを作成 (TestConnectionString)で定義がされていませんなる エラーがでます。定義はしているのですが何故でしょうか? 教えて下さいよろしくお願いいたします。 Protected Sub updateTimestamp(ByVal syouhinCD As String, ByVal updateFieldName As String, ByVal updateData As String) Using connection As New System.Data.Odbc.OdbcConnection(TestConnectionString) Dim updateCommand As String updateCommand = ("UPDATE Test SET {1} = Now(), {2} = 'dummy' WHERE({4} = 42)") Dim command As System.Data.Odbc.OdbcCommand = New System.Data.Odbc.OdbcCommand(updateCommand, connection) connection.Open() command.ExecuteNonQuery() connection.Close() End Using End Sub

みんなの回答

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.1

TestConnectionString は、WebConfiturationManagerで取得できていますか?(ASP.NET 2.0の場合) string TestConnectionString = WebConfigurationManager.ConnectionStrings["TestConnectionString"]; AppSettingsに設定した場合は、  WebConfigurationManager.AppSettings["TestConnectionString"] web.configなど構成ファイルで設定する値は、keyとvalueのペアです。 設定マネージャクラスで、keyを指定して、値を取り出してください。 また、2.0の場合は、上のようなデータベースコネクションクラスの 生成は行ないません。これは旧形式です。

ark2004
質問者

補足

申し訳ありません。 >WebConfiturationManagerで取得できていますか?(ASP.NET 2.0の場合) >string TestConnectionString = >WebConfigurationManager.ConnectionStrings >["TestConnectionString"]; 上記は何処に記述すればよろしいのでしょうか? >AppSettingsに設定した場合は、 > WebConfigurationManager.AppSettings["TestConnectionString"] AppSettingsに設定されているかは何処を確認したらよろしいでしょうか? >web.configなど構成ファイルで設定する値は、keyとvalueのペアです。 >設定マネージャクラスで、keyを指定して、値を取り出してください。 どのようにしてよいかわからないのですが。。 因みに今現在ASP.NET2.0(MicrosoftWebDeveloper2005Express) で開発しています。 多分初歩的な質問ばかりで話にならないと思いますが よろしくお願い申し上げます。 また、ASP.NET2.0を詳しく知るための 有料セミナーや書籍がございましたらこれも お願いできないでしょうか。よろしくお願いいたします

関連するQ&A

  • ASP.NET OleDbConnectionが定義がされていません

    ACCESS2003 で 以下のサンプルを実行すると OleDbConnectionが定義がされていません。 というエラーが発生していて対処方法をしらべ てもわかりませんでした。 何方かご教授ください。よろしくお願いいたします。 Public Sub InsertRow(ByVal connectionString As String, _ ByVal insertSQL As String) Using connection As New OleDbConnection(connectionString) Dim command As New OleDbCommand(insertSQL) command.Connection = connection Try connection.Open() command.ExecuteNonQuery() Catch ex As Exception Console.WriteLine(ex.Message) End Try End Using End Sub 以下のOleDbConnectionオブジェクトの作成は行いました。 http://www.atmarkit.co.jp/fdotnet/aspexp/aspexp03/aspexp03_01.html

  • asp.netでのセッションを使用したログイン

    asp.netでmssql server を利用してログイン機能を実装しました。 以下のようなコードでmssqlに保存してあるIDとパスが一致すれば 以降の画面ではセッションにID、パスが保存され page loadでセッションにID、パスがなかればページがすすんでいけないような設定にしています。 機能は問題なく動作しているのですがこのような仕様はセキュリティ上問題はないのでしょうか。 商用サイトではないのですが、ある程度広域に向けたサイトを構築しようと考えておりまして、セキュリティ向上のため、工夫できるようなことがあればご意見いただきたいです。 よろしくお願いいたします。 ************************************************************** ログインページ ************************************************************** Dim staffid As Integer Dim staffname As String Dim adminflag As Boolean Protected Sub btnLogon_Click(ByVal sender As Object, ByVal e As System.EventArgs) 'ユーザーIDの入力チェック If txtUserID.Text = "" Then lblErr.Text = "ユーザーIDを入力してください。" Return End If 'パスワードの入力チェック If txtpassword.Text = "" Then lblErr.Text = "パスワードを入力してください。" Return End If 'ユーザーとパスワードの検証 If Not CheckUserPassword(txtUserID.Text, txtpassword.Text) Then lblErr.Text = "ユーザーIDまたはパスワードが違います。" Return End If 'セッション変数へ値をセットする Session("StaffID") = staffid Session("StaffName") = staffname Session("AdminFlag") = adminflag End Sub Private Function CheckUserPassword(ByVal userid As String, ByVal password As String) As Boolean Dim ret As Boolean Dim strSQL As String strSQL = "SELECT staffID, staff_name, admin_flag , permission FROM tbl_staff " & _ "WHERE userID = '" & userid.Replace("'", "''") & _ "' AND password = '" & password.Replace("'", "''") & "'" '接続文字列を取得する Dim cnStr As String = System.Configuration.ConfigurationManager.ConnectionStrings("hogehogeConnectionString").ConnectionString() 'コネクションを定義する Using connection As New SqlConnection(cnStr) 'コマンドを定義する Dim command As New SqlCommand(strSQL, connection) 'コネクションを開く connection.Open() Try 'コマンドからデータリーダーを定義する Dim dr As SqlDataReader = command.ExecuteReader 'データリーダーから結果を読み込む If dr.Read Then '対象データが存在する場合 '正しいユーザーIDとパスワードが指定されたので、 'データリーダーから読み出したデータをメンバ変数にセットする staffid = dr("staffID") staffname = dr("staff_name") adminflag = dr("admin_flag") permission = dr("permission") ret = True Else '対象データが存在しない場合 '不正なユーザーIDまたはパスワードが指定された ret = False End If Catch ex As Exception '例外処理(SQLエラーなど) ret = False End Try 'コネクションを閉じる connection.Close() End Using '結果を返して終了する Return ret End Function ************************************************************** ログイン後に行くページでの設定 ************************************************************** Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) '[ユーザーID]ボックスにフォーカスをセットする If Session("StaffID") Is Nothing Then Response.Redirect("~/top.aspx") ElseIf Not Session("AdminFlag") = True Then Response.Redirect("~/top_normal.aspx") End If End Sub

  • ASP.NET で意味不明のエラーが発生!教えてください

    web.configに以下の定義をしました。 Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\db1.mdb" 以下をメインの処理で設定 Using connection As New OleDbConnection(connectionString) 「connectionString」で以下のメッセージが 表示されます。どのようにしたらエラーが解決できるのでしょうか? 教えてください。 This application is currently offline. To enable the application, remove the app_offline.htm file from the application root directory

  • VB DB更新時にパラメーターへ値のセット

    データベースの更新についてご指導下さい。 VB2010からSQLサーバーのデータベースに接続しております。 dataAdapter.Updateによりデータベースを更新する際の パラメーターへ値をセットする方法を教えて下さい。 テーブル名Test Code Name ------------ A   Suzuki 希望する処理 テキストボックスに入力された名前に変更 例) Suzuki → Yamada ○フォームの変数として定義 Dim dataAdapter As New SqlDataAdapter Dim dataSet As New DataSet ○FormLoad時にSelectCommandとUpdateCommandを設定 Dim SQL As String = "" Dim command As SqlCommand Dim connection As SqlConnection = New SqlConnection(~) SQL = "SELECT * FROM Test WHERE Code = @code " command = New SqlCommand(SQL, connection) dataAdapter.SelectCommand = command dataAdapter.SelectCommand.Parameters.Add("@code", SqlDbType.Char) SQL = "UPDATE Test SET Name = @name WHERE Code = @code" command = New SqlCommand(SQL, connection) dataAdapter.UpdateCommand = command dataAdapter.UpdateCommand.Parameters.Add("@code", SqlDbType.Char) dataAdapter.UpdateCommand.Parameters.Add("@name", SqlDbType.Text, 50) ○データ表示時にはこれで表示されました。 dataAdapter.SelectCommand.Parameters.Item("@code").Value = ComboBoxCode.text dataAdapter.Fill(dataSet) ○このSelectCommandを参考にこのように書いて見たのですが更新されません。 dataAdapter.UpdateCommand.Parameters.Item("@code").Value = ComboBoxCode.Text dataAdapter.UpdateCommand.Parameters.Item("@name").Value = TextBoxName.Text dataAdapter.Update(dataSet) どのようにしたら実行時にパラメーター化したところへデータをセットできるのでしょうか? データセットに値が入っていないのでは?と予想したのですが…。

  • vb.netでデータベース(Access)を複数アクセス(編集)する方

    vb.netでデータベース(Access)を複数アクセス(編集)する方法について いつも大変お世話になっています。 vb.netでデータベース(Access)を複数アクセス(編集)する方法についてご教授願います。 'SQL文 Dim wrk_sql As String 'データベース Dim G_DATABASES As New System.Data.OleDb.OleDbConnection 'DBの型を定義 Dim dr As System.Data.OleDb.OleDbDataReader 'SQLの型を定義 Dim cmnd As New System.Data.OleDb.OleDbCommand 'データベースを開く G_DATABASES = DBOpen(D:\test\db1.mdb") 'データ抽出 ※1 wrk_sql = "SELECT * FROM TEST" wrk_sql &= " WHERE N_DATA = 0" cmnd.Connection = G_DATABASES cmnd.CommandText = wrk_sql 'コマンドの実行 dr = cmnd.ExecuteReader() While dr.Read() = True ' ………← ※2 End While <目的> [※1]で抽出した結果(複数行存在します)を保持したまま [※2]の中で同じDB(G_DATABASES)にアクセスし SELECT文で抽出した結果を保持したまま処理を続けたい。 <問題> ・実行時「指定したデータベースは既に開いている」とのエラーが表示。 ・DBの型の定義、SQLの型の定義 を複数用意してもエラーが表示。

  • VB2010でCSV取込

    VB2010とAccessを使用しています。 あるCSVファイルからACCESSへデータ取り込みをしようとして CSVをデータテーブルに代入するコードを考えているのですが 下記のコードでは『FROM句』のエラーのようでうまく作動しません? ご教授お願いします。 Private Sub ToolMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolMenu.Click Dim OFD As New OpenFileDialog OFD.FileName = "" OFD.InitialDirectory = "\\10.20.100.35\data\LOG\" OFD.Filter = "CSVファイル(*.csv)|*.csv|すべてファイル(*.*)|*.*" OFD.FilterIndex = 1 OFD.Title = "取り込むCSVファイルを選択してください" OFD.RestoreDirectory = True OFD.CheckFileExists = True OFD.CheckPathExists = True If OFD.ShowDialog() = DialogResult.OK Then Try Dim DT As New DataTable '===============CSVからクエリ=============== Using OleCn As New System.Data.OleDb.OleDbConnection Dim CSVFileName As String = System.IO.Path.Combine(OFD.InitialDirectory, "aaa.csv") OleCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & OFD.InitialDirectory & _ ";Extended Properties=""Text;HDR=YES;IMEX=1;FMT=Delimited""" Dim SQL As String = "" SQL = "SELECT * FROM " + CSVFileName Using DA As System.Data.OleDb.OleDbDataAdapter = _ New System.Data.OleDb.OleDbDataAdapter(SQL, OleCn) DT.Clear() DA.Fill(DT) End Using End Using Catch ex As Exception MessageBox.Show(ex.ToString, "例外発生") Exit Sub End Try End If End Sub

  • Newがどのような役割をしているのかわからない

    エクセルからアクセスの更新クエリを実行する際に エクセル側のコードで Sub ACCESSのアクションクエリを実行する() Dim cn As ADODB.Connection Dim myCmd As ADODB.Command Set cn = New ADODB.Connection Set myCmd = New ADODB.Command cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ".accdb;Jet OLEDB:Database" だとうまくいきませんでしたが、 Dim cn As New ADODB.Connection にしたらうまくいきました。 Newを付けることによって成功したのですが、 Newがどのような役割をしているのかわからないので教えてください。

  • VB.NETのデリゲートについて

    VB.NETのデリゲートについて質問です。 以下のプログラムなのですが、 デリゲート型をインスタンス化しているところで、コンストラクタにパラメータを渡していますが、 そのコンストラクタはどこに定義されているのでしょうか。 (AddressOf t1.Ohayou)というパラメータが渡されていますが、このパラメータを受け取っているコンストラクタがどれなのかが分かりません。 ご教示よろしくお願いいたします。 Delegate Sub Myprint(ByVal s As String) Module Module1 Sub Main() Dim t1 As Test1 = New Test1() Dim t2 As TEst2 = New Test2() Dim d As Myprint = New Myprint(AddressOf t1.Ohayou) d.Invoke("VB太郎") d = New Myprint(AddressOf t2.Konbanwa) d.Invoke("VB太郎") End Sub End Module Class Test1 Sub Ohayou(ByVal s As String) Console.WriteLine("おはようございます。{0}です。", s) End Sub End Class Class Test2 Sub Konbanwa(ByVal s As String) Console.WriteLine("こんばんわ。{0}です。", s) End Sub End Class

  • VB2010 SQLのUPDATE文エラー

    VB2010とAccess2007で使用しています データを日付順に連番を付けるコードを作成したのですが『UPDATE文構文エラーです』等のエラーが発生します? ご教授お願いします。 Private Sub Button連番_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button連番.Click Dim DT As New DataTable Try Using OleCn As New OleDbConnection(mdbPath) Dim SQL As String = "" SQL = "SELECT * FROM tableA ORDER BY 依頼日" Using DA As System.Data.OleDb.OleDbDataAdapter = _ New System.Data.OleDb.OleDbDataAdapter(SQL, OleCn) DT.Clear() DA.Fill(DT) End Using End Using Using OleCn As New OleDbConnection(mdbPath) Dim SQL As String = "" SQL = "UPDATE tableA SET No = @no WHERE 登録ID_Export = @登録ID" Dim OleCmd As New OleDbCommand(SQL) OleCmd.Connection = OleCn OleCn.Open() OleCmd.Parameters.Add("@no", OleDbType.Integer) OleCmd.Parameters.Add("@登録ID", OleDbType.Integer) For i As Integer = 1 To DT.Rows.Count OleCmd.Parameters("@no").Value = i OleCmd.Parameters("@登録ID").Value = CInt(DT.Rows(i)("登録ID_Export").ToString) OleCmd.ExecuteNonQuery() Next i OleCmd.Dispose() OleCn.Dispose() End Using Catch ex As Exception MessageBox.Show(ex.ToString, "例外発生") Exit Sub End Try MsgBox("ok") End Sub

  • VB.NET DataReaderが開かれている

    おはようございます。 今回はVB.NETについて質問させてください。 【開発環境】 ・VB.NET(Visual Studio2010) ・PostgreSQL8.3 ・WindowsXP 【質問内容】 ある一定の操作をすると、 『この Command に関連付けられている DataReader が既に開かれています。このコマンドを最初に閉じる必要があります』 とエラーが出てしまい、例外で落ちてしまいます。 【落ちる原因の操作】 1.メインフレームを起動 2.親品番マスタから取得した親品番一覧を表示しているListViewの1件をダブルクリック 3.親品番に紐付いている子品番を品番テーブルから取得 4.表示内容の切り替えラジオボタンを全て⇒図面ありに変更 5.表示内容の切り替えラジオボタンを図面あり⇒全てに変更 6.表示内容の切り替えラジオボタンを全て⇒図面ありに変更 7.表示内容の切り替えラジオボタンを図面あり⇒全てに変更←ここで先ほどの例外が発生する。 【該当部分のソース】 Private Sub ArticleTableUpdate(ByVal sParents As String) Dim articleResult As Odbc.OdbcDataReader ' 品番テーブル用 Dim articleSql As String Dim zumenSql As String Dim sChild As String Dim articleCount As Integer Dim zumenCount As Integer Dim zumenFlag As String ' 品番テーブルからデータを取得するSQLを作成 articleSql = "SELECT * FROM ""ARTICLE_TBL"" WHERE ""P_ARTICLE_NUMBER"" = '" + sParents + "'" Debug.WriteLine("【ArticleTableUpdate】 品番テーブルからデータを取得SQL:" + articleSql) ODBCCommand.CommandText = articleSql ' 品番テーブルから該当の親品番のデータ件数を取得 'articleCount = ODBCCommand.ExecuteNonQuery() ' 品番テーブルに該当の親品番のデータが存在するか 'If articleCount = 0 Then 'Exit Sub 'End If ' 品番テーブルから該当の親品番のデータを取得 articleResult = ODBCCommand.ExecuteReader() ←ここで例外発生 ' 取得した件数分処理 While articleResult.Read() ' 子品番データを取得 sChild = articleResult("C_ARTICLE_NUMBER").ToString If sChild <> "" Then ' 子品番データをキーに図面マスタからデータを取得するSQLを作成 zumenSql = "SELECT * FROM ""ZUMEN_MST"" WHERE ""PLAN_NUMBER"" = '" + sChild + "'" Else sParents = articleResult("P_ARTICLE_NUMBER").ToString zumenSql = "SELECT * FROM ""ZUMEN_MST"" WHERE ""PLAN_NUMBER"" = '" + sParents + "'" End If Debug.WriteLine("【ArticleTableUpdate】 図面マスタからデータを取得SQL:" + zumenSql) ODBCCommand2.CommandText = zumenSql ' 図面マスタから該当の品番のデータの件数を取得 zumenCount = ODBCCommand2.ExecuteNonQuery ' 図面マスターに該当の品番のデータが存在するか If zumenCount = 0 Then ' 図面データが存在しない為、更新値を0とする zumenFlag = "0" Else ' 図目データが存在する為、更新値を1とする zumenFlag = "1" End If ' 品番テーブルを更新するSQLを作成 zumenSql = "UPDATE ""ARTICLE_TBL"" " + vbCrLf + "SET " + vbCrLf + vbTab + """C_ARTICLE_NUMBER"" = '" + sChild + "', " + vbCrLf + vbTab + """PLAN_FLAG"" = '" + zumenFlag + "', " + vbCrLf + vbTab + """UPDATE_DATE"" = '" + Today + "'" + vbCrLf + "WHERE ""P_ARTICLE_NUMBER"" = '" + sParents + "'" Debug.WriteLine("【ArticleTableUpdate】 品番テーブルを更新するSQL:" + zumenSql) ODBCCommand2.CommandText = zumenSql ' 品番テーブルを更新 zumenCount = ODBCCommand2.ExecuteNonQuery() End While articleResult.Close() ODBCCommand = New Odbc.OdbcCommand ODBCCommand.Connection = ODBCSession End Sub 【DB接続関数】 Public Function ODBC_CONNECT() As Boolean ' 戻り値をセット ODBC_CONNECT = False If ConnectFlag = False Then Try ODBCSession = New Odbc.OdbcConnection ODBCCommand = New Odbc.OdbcCommand ODBCCommand2 = New Odbc.OdbcCommand ' データベース接続情報 ODBCSession.ConnectionString = "Provider=MSDASQL;DSN=HOGE;UID=hogeU;PWD=hogeP;" ODBCCommand.Connection = ODBCSession ODBCCommand2.Connection = ODBCSession ' データベースに接続 ODBCSession.Open() ConnectFlag = True ODBC_CONNECT = True Catch Debug.WriteLine("えらー") End Try End If End Function 今のところ、このエラーが発生した場合、再起動すると発生しなくなるみたいです。(たまたまそうなったのかもしれません) 何か原因がわかる方、ご教授お願い致します。