2014-01-05 119 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沒有工作_?任何異常或錯誤信息? –

+0

如果有任何錯誤,我很抱歉,但我正在使用谷歌翻譯器。我把連接字符串。看到了! –

回答

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

看看Windows應用程序日誌或SQL Server錯誤日誌,看看你在你的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

要選擇作品,但要刪除,更新和插入不工作! –