Ошибка при попытке выполнить & ldquo; con.ConnectionString = ConfigurationManager.ConnectionStrings [& rdquo; DataBase & ldquo;]. ToString (); & rdquo; [Дубликат]

Примером этого исключаемого исключения является: Когда вы пытаетесь проверить что-то, это null.

Например:

string testString = null; //Because it doesn't have a value (i.e. it's null; "Length" cannot do what it needs to do)

if (testString.Length == 0) // Throws a nullreferenceexception
{
    //Do something
} 

Время выполнения .NET исключение NullReferenceException при попытке выполнить действие над чем-то, что не было инстанцировано, т.е. код выше.

По сравнению с ArgumentNullException, которое обычно выбрано как защитная мера, если метод ожидает, что то, что происходит

Дополнительная информация находится в C # NullReferenceException и Null Parameter .

4
задан Theomax 2 April 2012 в 09:15
поделиться

4 ответа

Хотя существуют встроенные возможности .NET для хранения информации, связанной с пользователем (через реестр, файлы конфигурации, настройки и т. д.), они кажутся слишком тяжелыми.

Я бы рекомендовал использовать текстовый файл и сохраните его в папке пользователя:

var userPath = Environment.GetFolderPath(Environment
                                             .SpecialFolder.ApplicationData);
var filename = Path.Combine(userPath, "mysettings");

// Read connection string
var connectionString = File.ReadAllText(filename);

// Write connection string
File.WriteAllText(filename, connectionString);

Также обратите внимание, что вряд ли пользователи получат удовольствие от работы со строками подключения. Они предпочитают указывать имя базы данных, сервер, имя пользователя и т. Д., Используя отдельные поля формы. Чтобы сопоставить эти поля с строкой подключения, вы можете использовать класс SqlConnectionStringBuilder (если вы работаете с MSSQL Server):

// to connection string
var connectionStringBuilder1 = new SqlConnectionStringBuilder();
connectionStringBuilder1.DataSource = "server";
connectionStringBuilder1.InitialCatalog = "database";
var connectionString = connectionStringBuilder1.ConnectionString;

// from connection string
var connectionStringBuilder2 = new SqlConnectionStringBuilder(connectionString);
var serverName = connectionStringBuilder2.DataSource;
var databaseName = connectionStringBuilder2.InitialCatalog;
2
ответ дан w͏̢in̡͢g͘̕ed̨p̢͟a͞n͏͏t̡͜͝he̸r̴ 4 September 2018 в 08:58
поделиться

Вы можете сохранить строку подключения в App.config и получить ее следующим образом:

string connStr = ConfigurationSettings.AppSettings["ConnectionString"];

public SqlConnection conn = new SqlConnection(connStr);

Пример App.config:

<?xml version="1.0" encoding="utf-8" ?>    
<configuration>    
    <configSections>    
    </configSections>    
<connectionStrings>    
    <add name="ConnectionString" connectionString="Data Source=./SQLEXPRESS;Initial Catalog=DB;Integrated Security=SSPI;" providerName="Microsoft.SqlClient" />    
 </connectionStrings>    
</configuration>
4
ответ дан ionden 4 September 2018 в 08:58
поделиться

У меня возникло бы желание использовать настройки приложения для этой цели.

http://msdn.microsoft.com/en-us/library/aa730869 (v = vs.80). aspx

Это рекомендуемое место для хранения строк соединения: -)

4
ответ дан KingCronus 4 September 2018 в 08:58
поделиться

У вас должен быть файл конфигурации app.config, и там, определите раздел <connectionStrings>:

<configuration>
   <connectionStrings>
       <add name="YourNameHere" 
            connectionString="server=.;database=AdventureWorks;Integrated Security=SSPI"/>
   </connectionStrings>
</configuration>

Затем вы добавляете ссылку на System.Configuration в свой проект, а затем вы могут легко получить эти строки соединения:

string connStr = ConfigurationManager.ConnectionStrings["YourNameHere"].ConnectionString;

using(SqlConnection connection = new SqlConnection(connStr))
{
   // do something here....
}
5
ответ дан marc_s 4 September 2018 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: