在程序里添加完成后,在程序中能看见新加的数据,但关闭程序再打开就没了,查看数据库里也没有,怎么回事呢??
private void button1_Click(object sender, EventArgs e) 

string name = this.textBox1.Text.Trim(); 
string beizhu = this.textBox2.Text.Trim(); 
site add = new site(); 
add.Name = name; 
add.Beizhu = beizhu; 
if (add.addgongdi(add) > 0) 

MessageBox.Show(this, "工地添加成功", "工地", MessageBoxButtons.OK); 

else 

MessageBox.Show(this, "工地添加失败", "工地", MessageBoxButtons.OK); 

this.Dispose(); 
} #region 添加 
public int addgongdi(site add) 
{ Database exe = new Database(); 
SqlParameter[] param ={Database.CreateInParam("@Name",SqlDbType.NVarChar,50,add.Name), 
Database.CreateInParam("@Beizhu",SqlDbType.NVarChar,200,add.Beizhu), 
}; 
try 

return (exe.execute("addgongdi", param, 1)); 

catch (Exception ex) 

throw new Exception(ex.Message, ex); 
} } 
#endregion 
public DataTable GetTable(string proname, SqlParameter[] param, string table, int IsType) 

Open(); 
SqlCommand cmd = new SqlCommand(proname, cn); 
if (IsType == 1) 

cmd.CommandType = CommandType.StoredProcedure; 

else 

cmd.CommandType = CommandType.Text; 

if (param != null) 

foreach (SqlParameter s in param) 

cmd.Parameters.Add(s); 


DataSet ds = new DataSet(); 
SqlDataAdapter da = new SqlDataAdapter(); 
da.SelectCommand = cmd; 
da.Fill(ds, table); 
DataTable dt = ds.Tables[0]; 
Close(); 
return dt; } 
存储过程 
ALTER PROCEDURE dbo.addgongdi 
@Name nvarchar(50), 
@Beizhu nvarchar(200) 
AS 
INSERT INTO GongDi 
(GName, BeiZhu) 
VALUES (@Name,@Beizhu) 
RETURN @@identity

解决方案 »

  1.   

    你添加完之后,马上从数据库中重新获得数据,看看结果就知道了。估计你那个是缓存。吧sqlprofile起来,看看数据库怎么执行的。
      

  2.   

    存储过程改成这个试试ALTER PROCEDURE dbo.addgongdi 
    @Name nvarchar(50), 
    @Beizhu nvarchar(200) 
    ASexec('INSERT INTO GongDi 
    (GName, BeiZhu) 
    VALUES ('''+@Name+''','''+@Beizhu+''')') 
    RETURN @@identity
      

  3.   

    存储过程好像没加 输出的参数吧
    output.