我在这里的各个帖子中看到了相同的主题/问题,但似乎没有我正在寻找的东西。
我在数据库中有两个相同的表,我想以相同的方式填充它们,使用两种相同的方法,它们只有不同的数据存储。第一种方法EnterParams
工作正常&填充表,但第二个失败。
尝试逐行调试代码,当它转到com.ExecuteNonQuery()
时,它会捕获异常(In my controller i have a try/catch method)
并停止。
我怎么知道它是什么异常以及如何处理它?这很奇怪,因为两种方法都相同,一种成功,一种失败
namespace Test.Models
{
public class ArduinoEntities : DbContext
{
public ArduinoEntities()
: base("name=ArduinoEntities")
{
}
public virtual DbSet<TempHum> TempHum { get; set; }
public virtual DbSet<TempHum2> TempHum2 { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
[Table("TempHum")]
public class TempHum
{
[Key]
public long SID { get; set; }
public string Humidity { get; set; }
public string TemperatureC { get; set; }
public string LightLevel { get; set; }
public string Dust { get; set; }
}
public class EnterParams
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ArduinoEntities"].ConnectionString);
TempHum Emp = new TempHum();
public string AddParams(TempHum Emp)
{
SqlCommand com = new SqlCommand("InsertData", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@Humidity", Emp.Humidity);
com.Parameters.AddWithValue("@TemperatureC", Emp.TemperatureC);
com.Parameters.AddWithValue("@LightLevel", Emp.LightLevel);
com.Parameters.AddWithValue("@Dust", Emp.Dust);
con.Open();
com.ExecuteNonQuery();
con.Close();
return "";
}
}
[Table("TempHum2")]
public class TempHum2
{
[Key]
public long SID { get; set; }
public string Humidity { get; set; }
public string TemperatureC { get; set; }
public string LightLevel { get; set; }
public string Dust { get; set; }
}
public class EnterParams2
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ArduinoEntities"].ConnectionString);
TempHum2 Emp = new TempHum2();
public string AddParams2(TempHum2 Emp)
{
SqlCommand com = new SqlCommand("InsertData2", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@Humidity", Emp.Humidity);
com.Parameters.AddWithValue("@TemperatureC", Emp.TemperatureC);
com.Parameters.AddWithValue("@LightLevel", Emp.LightLevel);
com.Parameters.AddWithValue("@Dust", Emp.Dust);
con.Open();
com.ExecuteNonQuery();
con.Close();
return "";
}
}
}
&#34; InsertData2&#34;存储过程
CREATE PROCEDURE [dbo].[InsertData2]
@SID int,
@Humidity VARCHAR(50),
@TemperatureC VARCHAR(50),
@LightLevel VARCHAR(50),
@Dust VARCHAR(50)
AS
begin
INSERT INTO [dbo].[TempHum2] ([Humidity],[TemperatureC],[LightLevel],[Dust]) VALUES (@Humidity,@TemperatureC,@LightLevel,@Dust)
end
答案 0 :(得分:0)
根据评论回答,您可以从以下选项中选择一个:
SID
设为自动增量,然后您无需在此列中插入值。SID
,并通过命令param传递SID
的值