2014-01-05 5 views
-1

Честно говоря, я пробовал все и разными способами, но я не могу дать простой INSERT в базе данных. Пожалуйста, может кто-нибудь сказать мне, что не так с этим кодом?Вставить в базу данных «MDF» не работает

using (SqlConnection con = new SqlConnection(AcessoBD.ConnectionString)) 
{ 
    string queryUsuario = @"INSERT INTO si_usuario (senha, login) VALUES ('aaa', 'aaa');"; 

    using (SqlCommand cmd = new SqlCommand(queryUsuario, con)) 
    { 
     con.Open(); 
     cmd.BeginExecuteNonQuery(); 

    } 
} 

давая понять, что я попытался с: cmd.ExecuteNonQuery(); Но это не сработало!

Самое смешное, что я могу сделать скамный запрос выше, используя ту же структуру, только даже изменяя запрос. Это проблема разрешения? Но ошибки не возникает!

public class AcessoBD 
    { 
     static public String ConnectionString 
     { 
      get 
      {  
       return ConfigurationManager.ConnectionStrings["Conexao"].ConnectionString; 
      } 
     } 
    } 

Структура таблицы

CREATE TABLE [dbo].[si_usuario] (
    [id] INT   IDENTITY (1, 1) NOT NULL, 
    [senha] VARCHAR (100) NOT NULL, 
    [login] VARCHAR (100) NOT NULL, 
    CONSTRAINT [PK_si_usuario] PRIMARY KEY CLUSTERED ([id] ASC) 
); 

App.config

<add name="Conexao" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Base\Database.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> 
+0

Что строка подключения выглядит? –

+1

Что вы подразумеваете под _it did not work_? Любое сообщение об исключении или ошибке? –

+0

Прошу прощения, если есть какие-либо ошибки, но я использую переводчик Google.Я установил строку подключения. Видеть, что! –

ответ

0

Это должен быть вопрос разрешения. Ваш код отлично работает в версии разработчика SQL Server 2012. См. Быстрый тест ниже.

Я могу только предположить, что вы используете SQL Server express, который поставляется с Visual Studio и не дает доверенным пользователям INSERT, UPDATE, DELETE разрешений к таблице.

Загрузите SQL Server Management Studio Express и начните отладку своей проблемы!

http://msdn.microsoft.com/en-us/evalcenter/hh230763

Посмотрите на журнал окна приложения или SQL журнал ошибок сервера, чтобы увидеть, если вы игнорируете ошибки в C# программы. Проследите подключение к базе данных с помощью профилировщика, чтобы убедиться, что вы передаете INSERT.

Взгляните на безопасность под логинами/пользовательским сопоставлением. Отображает ли пользователь карту базы данных по схеме dbo по умолчанию? Какое разрешение вы им дали.

Если у них есть только общедоступные, добавьте db_datareader и db_datawriter, чтобы они могли читать/записывать во все таблицы.

В противном случае предоставите права на уровне таблицы. Но вы сделаете это для каждой таблицы, больше обслуживания.

Взгляните на мою статью в блоге по использованию SSMS для создания логинов/пользователей.

http://craftydba.com/?p=4369

Успехов

-- Code works fine! 
use tempdb 
go 

CREATE TABLE [dbo].[si_usuario] (
    [id] INT   IDENTITY (1, 1) NOT NULL, 
    [senha] VARCHAR (100) NOT NULL, 
    [login] VARCHAR (100) NOT NULL, 
    CONSTRAINT [PK_si_usuario] PRIMARY KEY CLUSTERED ([id] ASC) 
); 
go 

INSERT INTO si_usuario (senha, login) VALUES ('aaa', 'aaa'); 
go 

select * from si_usuario 
go 

enter image description here

+0

Спасибо за подсказку. Я попробую здесь. :) –

0

Попробуйте изменить это:

using (SqlConnection con = new SqlConnection(AcessoBD.ConnectionString)) 
{ 
    con.Open(); 
    using (SqlCommand cmd = con.CreateCommand()) 
    { 
     cmd.CommandText = @"INSERT INTO si_usuario (senha, login) VALUES ('aaa', 'aaa');"; 
     cmd.ExecuteNonQuery(); 

    } 
} 
+0

Это не сработало. И ошибка не возникает! –

+0

Вы пробовали с выбором или обновлением? Устранены ли исключения в Visual Studio? Вы пытались запустить инструкцию, используя те же учетные данные, сервер ... в анализаторе запросов? – mopicus

+0

Чтобы выбрать работу, но удалить, обновить и вставить неработать! –

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