ここではさまざまな記事で同じトピック/質問を見ましたが、探しているものはありません。 私は2つの同一のテーブルをデータベースに持っています。同じ方法で2つの同一のメソッドを使用したいと思います。最初のメソッドEnterParams
は正常に動作します。&はテーブルにデータを入力しますが、2番目のテーブルは失敗します。 コードを1行ずつデバッグしようとしました。com.ExecuteNonQuery()
に行くと、例外(In my controller i have a try/catch method)
がキャッチされ、終了します。ExecuteNonQuery()データベースを更新していません
どのような例外があり、どのように処理するのかをどのように知ることができますか?両方の方法が同一であるので、それは、奇妙である1が成功し、一つは、あなたが以下のいずれかから1つを選択することができ
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 "";
}
}
}
「InsertData2」ストアドプロシージャのコメントに基づいて答える
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
を
SID
に値を渡す手順' InsertData2' [非常に悪い名]は '5'のparamsを期待していますが、'だけ合格した4' –Visual Studioの「例外設定」ですべての「共通言語ランタイム例外」をマークすると、おそらくスローされる例外に関する詳細が表示されます。 –
デバッグするときは、例外ハンドラで停止し、例外を調べます*。例外オブジェクトには、メッセージおよびスタックトレースを含むエラーに関する情報が含まれます。 – David