Исключение времени выполнения приложения базы данных ADO.NET - PullRequest
0 голосов
/ 08 октября 2018

Помогите пожалуйста с пониманием того, что говорят эти исключения и как я могу их разрешить?

Я создал приложение с ADO.NET.Отладчик проекта не показывает никаких ошибок, хотя, во время выполнения я получаю эти исключения.Я предполагаю, что я испортил некоторые строки кода, которые я написал в файле PersonkartotekDBUtil.cs, внутри этого метода GetFullContactPersonTreeDB.Здесь я пытаюсь показать полную обзорную информацию о человеке с подключением свойств каталога Person через принципы JOIN.

Может кто-нибудь исправить меня, пожалуйста?

Метод, который я подозреваю, не работает:

public void GetFullContactPersonTreeDB(ref Person fcpt)
    {
        string fullPersonkartotek = @"SELECT  Person.PersonId, Person.FirstName, Person.MiddleName, Person.LastName, Person.Email, Person.Notes, Person.PrimaryAddress, Person.AlternativeAddresses, Person.TelefonNumbers
                                          Address.AddressID, Address.StreetName, Address.HouseNumber, Address.PostNr, Address.PersonPrimary, Person.AlternativePerson
                                          PostNr.PostNrID, PostNr.PostNumber, PostNr._Country, PostNr._City
                                          City.CityID, City.CityName,
                                          Country.CountryID, Country.CountryCode, Country.CountryName,
                                          Telefon.TelefonID, Telefon.Number, Telefon.TelefonType, Telefon.TelefonProvider, 
                                          Provider.ProviderID, Provider.ProviderName

            FROM      Person INNER JOIN
            Address ON Person.PersonId = Address.Person INNER JOIN
            Telefon ON Person.PersonID = Telefon.Person
            AlternativeAddress ON Person.PersonID = AlternativeAddress.Person
            Address ON Person.PersonID = Address.Person
            WHERE   (Person.PersonID = @PersonId)";


    }

Сообщение об ошибке в окне консоли после запуска программы:

System.Data.SqlClient.SqlException (0x80131904): неправильный синтаксис рядом с '.'.в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое breakConnection, действие 1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObjectConignSlaySignSlayCallSignLoneLockLockSignLockLockLoneLockLoneLockLockLoneObB).TdsParser.TryRun (runBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader DATASTREAM, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean и dataReady) в System.Data.SqlClient.SqlDataReader.TryConsumeMetaData () в System.Data.SqlClient.SqlDataReader.get_MetaData () в системе.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader DS, RunBehavior runBehavior, String resetOptionsString, булева IsInternal, булева forDescribeParameterEncryption, булева shouldCacheForAlwaysEncrypted) при System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева returnStream, булева асинхронный, Int32тайм-аут, задание и задание, BooleaasyncWrite, Boolean inRetry, SqlDataReader ds, Boolean descriptionParameterEncryptionRequest) в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior, метод выполненияasyncWrite, Boolean inRetry) в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, логический returnStream, метод String) в System.Data.SqlClient.SeceReReader (метод String.SqlClient.SqlCommand.ExecuteReader () в Infrastructure.PersonkartotekDB.ADONET.PersonkartotekDBUtil.GetFullContactPersonTreeDB (Person & fcpt) в C: \ Users \ User \ Desktop \ E18I4DABHandIn2au2016082168 \ Personkartotek \ Инфраструктура \ PersonkartotekDB.ADONET \ PersonkartotekDBUtil.cs: линия 382 ClientConnectionId: 716d2899-cbbe-4aa6-89de-66452d907b66 Номер ошибки: 102, состояние: 1, класс: 15

необработанный Exception: System.Data.SqlClient.SqlException: неправильный синтаксис рядом с '.'.в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое breakConnection, действие 1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject..TdsParser.TryRun (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader DATASTREAM, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean и dataReady) в System.Data.SqlClient.SqlDataReader.TryConsumeMetaData () в System.Data.SqlClient.SqlDataReader.get_MetaData () в системе.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, логическое значение isInternal, логическое значение дляDescribeParameterEncryption, логическое значение shouldCacheForAl.cmdBehavior, RunBehavior runBehavior, булева returnStream, булева асинхронной, Int32 тайм-аут, задача и задачи, булева asyncWrite, булева inRetry, SqlDataReader DS, булева describeParameterEncryptionRequest) при System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean, String returnStreamметод, TaskCompletionSource`1 завершение, тайм-аут Int32, Task & task, Boolean & usedCache, логическое asyncWrite, Boolean inRetry) в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, метод метода RunBehavior для возврата к объекту.SqlClient.SqlCommand.ExecuteReader (поведение CommandBehavior, метод String) в System.Data.SqlClient.SqlCommand.ExecuteReader () в инфраструктуре.Personkartotek \ Инфраструктура \ PersonkartotekDB.ADONET \ PersonkartotekDBUtil.cs: строка 449 в ApplicationLogic.PersonkartotekApp.ProgramApp () в C: \ Users \ User \ Desktop \ E18I4DABHandIn2au2016082168 \ Personkartotek \ ApplicationLogic \ PersonkartotekApp.cs: строка 14 в ProgramApplication.Program.Main (пользовательская строка [Users \] \ Desktop \ в C:\ E18I4DABHandIn2au2016082168 \ Personkartotek \ ProgramApplication \ Program.cs: строка 10

В приложении показано исключение в отладчике.enter image description here

1 Ответ

0 голосов
/ 10 октября 2018

Похоже, вы пропустили несколько запятых, а также пропустили внутреннее соединение.

Запустив запрос в Sql server management studio (SSMS) и используя синтаксический анализ (CTRL + F5), вы можете выделить проблему.

См. Исправленный код ниже.В будущем стоит иметь последовательное форматирование, чтобы сделать вашу жизнь проще.

SELECT  Person.PersonId, Person.FirstName, Person.MiddleName, Person.LastName, Person.Email, Person.Notes, Person.PrimaryAddress, Person.AlternativeAddresses, Person.TelefonNumbers,
                                      Address.AddressID, Address.StreetName, Address.HouseNumber, Address.PostNr, Address.PersonPrimary, Person.AlternativePerson,
                                      PostNr.PostNrID, PostNr.PostNumber, PostNr._Country, PostNr._City,
                                      City.CityID, City.CityName,
                                      Country.CountryID, Country.CountryCode, Country.CountryName,
                                      Telefon.TelefonID, Telefon.Number, Telefon.TelefonType, Telefon.TelefonProvider, 
                                      Provider.ProviderID, Provider.ProviderName

        FROM      Person 
        INNER JOIN Address ON Person.PersonId = Address.Person 
        INNER JOIN Telefon ON Person.PersonID = Telefon.Person
        INNER JOIN AlternativeAddress ON Person.PersonID = AlternativeAddress.Person
        INNER JOIN   Address ON Person.PersonID = Address.Person
        WHERE   Person.PersonID = @PersonId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...