Sql Exception был пойман - PullRequest
       2

Sql Exception был пойман

1 голос
/ 01 декабря 2010

У меня есть такой метод

        public static DataSet GetAllDataBaseNames()
        {

        //Instance of connection is created
        SqlConnection sConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);

        //To Open the connection.
        sConnection.Open();
        string selectDatabase = @"SELECT   
                                        [NAME]
                                    FROM     
                                        [master..sysdatabases]";

        //Instance of command is created.
        SqlCommand sCommand = new SqlCommand(selectDatabase, sConnection);

        try
            {
            //Create the dataset.
            DataSet dsListOfDatabases = new DataSet("master..sysdatabases");

            //Create the dataadapter object.
            SqlDataAdapter da = new SqlDataAdapter(selectDatabase, sConnection);

            //Provides the master mapping between the sourcr table and system.data.datatable
            da.TableMappings.Add("Table", "master..sysdatabases");

            //Fill the dataadapter.
            da.Fill(dsListOfDatabases);

            //Bind the result combobox with non primary key table names
            DataViewManager dsv = dsListOfDatabases.DefaultViewManager;
            return dsListOfDatabases;
            }
        catch(Exception ex)
            {
            //Handles the exception and log that to the EventLog with the original message.
            EventLog log = new EventLog("Application");
            log.Source = "MFDBAnalyser";
            log.WriteEntry(ex.Message);
            return null;
            }

        finally
            {
            //checks whether the connection is still open.
            if(sConnection.State != ConnectionState.Closed)
                {
                sConnection.Close();
                }
            }

        }

Но когда я его так называю

        public void BindDBDropDown()
        {

          DataSet dsTablesWithoutForeignKeys = default(DataSet);

        try
            {
            //The function GetAllForeignKeyTables() is called from the class PluginManager.
            dsTablesWithoutForeignKeys = DataAccessMaster.GetAllDataBaseNames();

            dgResultView.DataSource = dsTablesWithoutForeignKeys.Tables["master..sysdatabases"];
            }
        catch(Exception ex)
            {
            //All the exceptions are handled and written in the EventLog.
            EventLog logException = new EventLog("Application");
            logException.Source = "MFDBAnalyser";
            logException.WriteEntry(ex.Message);
            }
        }

Получается исключение sql, пойманное в блоке catch

Можете ли вы, ребята, посмотрите на это.

1 Ответ

2 голосов
/ 01 декабря 2010

Попробуйте:

SELECT   [name]
FROM     [master]..[sysdatabases] // **not** [master..sysdatabases]

(обратите внимание на квадратные скобки)

Также;было бы гораздо предпочтительнее использовать using для SqlConnection, SqlCommand и т. д. - все, что реализует IDisposable - это гарантирует, что вы не потеряете соединения.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...