老实说,我已经尝试了很多方面,但我无法在数据库中提供简单的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" />
答案 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创建登录/用户。
祝你好运-- 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