2012-02-24 33 views
1

使用Visual Studio 2008,C#存储过程调用,一个奇怪的情况我现在面临

对于最近两天我面临的一个问题,所以我想我会问这里。 我已经在我的数据库这个存储过程叫做StoredProcedure1

ALTER PROCEDURE dbo.StoredProcedure1 
    @ID int, 
    @Username varchar(10), 
    @Pass varchar(10), 
    @Status varchar(10) 
AS 
    INSERT INTO tPasswords(ID, fUsername, fPassword, fStatus) 
    Values (@ID, @Username, @Pass, @Status) 

    RETURN 

我简单地添加一行到我的表。

当我从visual studio中的服务器资源管理器执行程序时,一切运行都很顺利,当我将数据看到数据库时,我看到刚添加的新行。

问题是当我试图运行我的程序内的过程。

因此,对于一个空的表单内的测试,我创建了一个按钮,:

using System.Data.Sql; 
using System.Data.SqlClient; 

private void button1_Click(object sender, EventArgs e) 
{ 
    string a = "Andreas"; 
    string b = "Andreas2"; 
    string c = "Andreas3"; 
    int _id = 10; 
    SqlConnection connection = new SqlConnection(
     Properties.Settings.Default.dPasswordsConnectionString); 
    SqlCommand cmd = new SqlCommand(
     "StoredProcedure1", connection); 
    connection.Open(); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandTimeout = 600; 
    cmd.Parameters.Add("@ID", _id); 
    cmd.Parameters.Add("@Username", a); 
    cmd.Parameters.Add("@Pass", b); 
    cmd.Parameters.Add("@Status", c); 

    int i = cmd.ExecuteNonQuery(); 

    connection.Close(); 
} 

当我按下这个按钮,我没有任何错误或任何东西,当我按了两次它会导致对错误相同的主键,所以程序正在工作。

但是,当我去我的数据库,我没有看到新的数据被插入。

这是我的问题其实,我无法从我的程序中写入我的数据库。

+0

什么是您的连接字符串?看起来像你在一个尚未最终确定的交易中。 – btlog 2012-02-24 01:21:51

+0

数据源=。\ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ dPasswords.mdf;集成安全性= True;用户实例= True“ – 2012-02-24 01:51:29

+0

请不要在”C#“等标题前加上标签。 。 – 2012-02-24 02:01:38

回答

1

你正试图设置存储过程中的主键,我猜测。

你应该让SQL为你设置它。

我在猜测@ID是你的主键......删除代码,并从你的proc中的代码插入到行中的值。

你应该确保你的列定义被设置为为你自动生成。

+0

的确@ID是我的主键,我修好了现在这个问题,但正如我上面描述的主要问题是,我不能从我的应用程序中添加我的数据库中的任何数据。 – 2012-02-24 01:12:27

+0

当我从服务器资源管理器运行StoreProcedure时,它正确地添加了datam,但是来自我的程序编号。 – 2012-02-24 01:13:48

+0

只需刷新表格并检查数据是否已插入。我在讲这个,因为即使我最初打破了我的头。担心即使数据实际存在也不会插入数据。解决Muad'Dib建议的主要问题。 – 2012-02-24 05:16:15

相关问题