插入数据库“MDF”不起作用

时间:2014-01-05 19:52:02

标签: c# sql sql-server sqlconnection sqlcommand

老实说,我已经尝试了很多方面,但我无法在数据库中提供简单的INSERT。请问有人能告诉我这段代码有什么问题吗?

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" />

2 个答案:

答案 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();

    }
}

答案 1 :(得分:0)

必须是许可问题。您的代码在SQL Server 2012开发人员版本中运行良好。请参阅下面的快速测试。

我只能假设您使用的是Visual Studio附带的 SQL Server express ,并且未向表提供受信任的用户INSERT,UPDATE,DELETE权限。

下载SQL Server Management Studio Express并开始调试您的问题!

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

查看Windows应用程序日志或SQL Server错误日志,看看是否忽略了C#程序中的错误。使用分析器跟踪与数据库的连接,以确保传递INSERT。

查看登录/用户映射下的安全性。用户是否使用默认架构dbo映射到数据库?你给了他们什么许可。

如果它们只有public,则添加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