2013-07-16 3 views
0

Я создаю служебную программу базы данных, и я, похоже, не могу получить правильную строку подключения.База данных ConnectionString C#

SqlConnection conn = new SqlConnection(); 
    conn.ConnectionString = 
     "Data Source=.\\SQLExpress;" + 
     "User Instance=true;" + 
     "Integrated Security=true;" + 
     "AttachDbFilename=|DataDirectory|ConfigurationData.mdf;"; 

Я считаю, что это правильный формат. Что касается источника данных, мой сервер sql - это SQLExpress, который запускает SQL Server 2008 R2. Моя база данных называется ConfigurationData. Я что-то упускаю?

Когда я запустил его, он открывает базу данных - я предполагаю, что это происходит, поскольку это не происходит из-за исключения, - но когда я пытаюсь вставить в таблицу, она фактически не вставляет его, но выполняет эту команду.

conn.Open(); 
     try 
     { 

      SqlCommand comm = new SqlCommand("INSERT INTO Test " + "(id,number) " + " VALUES(" + 10 + " , " + 12 + ")", conn); 
      comm.ExecuteNonQuery(); 
      Console.WriteLine("Database is created successfully", "MyProgram"); 
     } 
     catch (Exception ex) 
     { 

     } 
     finally 
     { 
      if ((conn.State == ConnectionState.Open)) 
      { 
       conn.Close(); 
      } 
     } 
+1

Скорее всего вы копируете каждый раз, когда вы строите/отлаживать файл .mdf, который перезаписывает базу данных, которую использует программа, с копией, которую вы имеете в своем решении. Вы можете проверить это? –

+0

как вы проверяете, было ли оно вставлено – Jonesopolis

+0

Я новичок в базах данных, и я проверяю, что когда я вставляю в таблицу, я помещаю точку останова и открываю таблицу, чтобы проверить, не вставлено ли оно – haysam

ответ

1

EDIT Просто вспомнил, что я ответил на аналогичный вопрос некоторое время назад. Проверьте это:

Why can't I insert data into local database (SQL Compact Edition) with C#?

Я не думаю, что это проблема строки соединения. Но для справки, хороший сайт, чтобы ссылаться на это http://www.connectionstrings.com/sql-server-2008/

Вы должны были бы один из них:

Вложить файл базы данных, расположенный в каталоге данных, при подключении к локальному экземпляру SQL Server Express

Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=dbname; 
Trusted_Connection=Yes; 

Приложить файл базы данных при подключении к локальному экземпляру SQL Server Express

Server=.\SQLExpress;AttachDbFilename=C:\MyFolder\MyDataFile.mdf;Database=dbname; 
Trusted_Connection=Yes; 

Использование экземпляра пользователя на локальном SQL S erver Express instance Функция User Instance создает новый экземпляр SQL Server на ходу во время подключения. Это работает только на локальном экземпляре SQL Server и только при подключении с использованием проверки подлинности Windows по локальным именованным каналам. Цель состоит в том, чтобы иметь возможность создавать полные права SQL

Экземпляр сервера для пользователя с ограниченными правами администратора на компьютере.

Data Source=.\SQLExpress;Integrated Security=true; 
AttachDbFilename=C:\MyFolder\MyDataFile.mdf;User Instance=true; 

Чтобы использовать функциональность пользовательского экземпляра, вам необходимо включить его на SQL Server. Это делается путем выполнения следующей команды: sp_configure «пользовательские экземпляры включены», «1». Чтобы отключить функцию, выполните sp_configure «пользовательские экземпляры включены», «0».

+0

. Это приводит к ошибке и говорит о том, что. \ Unrecognized escape-последовательность. если бы это было. \\? – haysam

+0

Также проверьте обновленный ответ. – reggie

+0

Не используйте "\\". Отформатируйте строку как @ "C: \ ... \" – DanteTheEgregore

0

попытка (локальный), а точка, точка не признается в Win XP

conn.ConnectionString = 
     "Data Source=(local)\\SQLExpress;" + 
     "User Instance=true;" + 
     "Integrated Security=true;" + 
     "AttachDbFilename=|DataDirectory|ConfigurationData.mdf;"; 
0

Почему бы не использовать класс SqlConnectionStringBuilder ?:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); 
builder.DataSource = @"(local)\SQLExpress"; 
builder.UserInstance = true; 
builder.IntegratedSecurity = true; 
builder.AttachDBFilename = "|DataDirectory|ConfigurationData.mdf"; 
SqlConnection conn = new SqlConnection(builder.ConnectionString()); 

Выход:

"Data Source=(local)\\SQLExpress;AttachDbFilename=|DataDirectory|ConfigurationData.mdf;Integrated Security=True;User Instance=True" 
0

Вы тоже SQL-заявка, и вы должны использовать параметры, но вот что вы должны иметь

SqlCommand comm = new SqlCommand("INSERT INTO Test (id, number) VALUES('" + 10 + " ', '" + 12 + "')", conn); 
0

Один из способов сделать это - добавить строку подключения в сеть.config, как показано ниже:

Jus щелкните по свойствам базы данных в проводнике базы данных. Там вы найдете connectionstring в своих свойствах. Jus добавьте его в строку соединения ниже.

<configuration> 
    <connectionStrings> 
     <add name="ConnectionName" connectionString="your connection string" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
</configuration> 

Затем на странице вы можете хранить его в строке или непосредственно обратитесь к связи, как показано ниже:

Connection con=new SqlConnection(); 
con.ConnectionString=ConfigurationManager.ConnectionStrings["connString"].ToString(); 

, и я подозреваю, что ваше заявление вставки не должным образом объявлено.

Просто попробуйте это:

SqlCommand comm = new SqlCommand("INSERT INTO Test (id,number) VALUES('10' ,'12')", con); 

Это все из моей стороны ... Надеюсь, что это помогло вам ..

Смежные вопросы