2014-01-05 87 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

要选择作品,但要删除,更新和插入不工作! –