0

Web アプリからデータベース テーブルにデータを挿入しようとしています。コードを実行するたびに、簡単に例外にジャンプします。ブレークポイントを設定しても、パラメータを確認するためにデバッグが停止しません。同じデータを手動でテーブルに挿入し、その作業を行うことで、テーブルが Web アプリから挿入されたデータ型を受け入れるかどうかも確認しました。

これが私のコードです

 Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim IP As String = TextBox3.Text
        Dim Country_Code As String = TextBox4.Text
        Dim Country As String = TextBox5.Text

        Dim conn As New SqlConnection("Data Source=***.***.***.***;Initial Catalog=IP_Loc;User ID=********;Password=************;Integrated Security=True")
        Dim cmd As New SqlCommand

        Try
            conn.Open()
            cmd = New SqlCommand("INSERT INTO IP_Info(IP, Country_Code, Country) VALUES (@IP, @Country_Code, @Country)", conn)
            cmd.Parameters.AddWithValue("@IP", IP)
            cmd.Parameters.AddWithValue("@Country_Code", Country_Code)
            cmd.Parameters.AddWithValue("@Country", Country)
            cmd.ExecuteNonQuery()
            conn.Dispose()
            conn.Close()

        Catch ex As Exception
            MsgBox("Database Connection Error")
        End Try

ローカル サーバーであるため、ユーザー ID とパスワードについて説明しました。問題に取り組む方法について何か提案はありますか?

これがエラーですconn.open()

System.Data.SqlClient.SqlException: Login failed for user 'Server'. at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open()

4

3 に答える 3

0

sqlcommand を 2 回宣言しています。修正プログラム

 Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

            Dim IP As String = TextBox3.Text
            Dim Country_Code As String = TextBox4.Text
            Dim Country As String = TextBox5.Text             
                Try
        Dim conn As New SqlConnection("Data Source=***.***.***.***;Initial   Catalog=IP_Loc;User ID=********;Password=************;Integrated Security=True")
                conn.Open()
            Dim cmd As New SqlCommand("INSERT INTO IP_Info(IP, Country_Code, Country) VALUES (@IP, @Country_Code, @Country)", conn)
                cmd.Parameters.AddWithValue("@IP", IP)
                cmd.Parameters.AddWithValue("@Country_Code", Country_Code)
                cmd.Parameters.AddWithValue("@Country", Country)
                cmd.ExecuteNonQuery()
                conn.Dispose()
                conn.Close()

            Catch ex As Exception
                MsgBox("Database Connection Error")
            End Try
于 2012-11-29T11:00:20.743 に答える
0

その接続文字列を使用するには、サーバー コンピューターに有効なユーザー アカウントが必要です。を指定します。これは、指定された IP アドレスにある SqlServer に接続しようとするIntegrated Security=TrueWindows の現在のユーザー ( ) が、そのマシンに対しても有効な Windows アカウントである必要があることを意味します。server

SqlServer がユーザーServerを認識しないため、接続失敗の例外が発生すると思われます。接続文字列から Integrated Security=True を削除しようとすることもできますが、これはユーザー ID とパスワードがサーバー マシンに対して有効であることを意味します。

MSDN の統合セキュリティに関するドキュメントを参照してください。

false の場合、接続でユーザー ID とパスワードが指定されます。true の場合、現在の Windows アカウントの資格情報が認証に使用されます。ユーザー ID とパスワードが指定され、統合セキュリティが true に設定されている場合、ユーザー ID とパスワードは無視され、統合セキュリティが使用されます。

于 2012-11-29T11:37:43.497 に答える
0

同じ問題がありました。ソリューション エクスプローラーでソリューションを右クリックし、[クリーン] を選択します。その後、ブレークポイントを使用して再度実行してみてください。

于 2012-11-29T17:29:35.620 に答える