プライマリキーと外部キーがID
、プライマリキーがid
、LeaveCategory
、外部キーがLeaveCategoryId
のテーブルがあります。しかし、私はこのエラーを受け取ります:列 'ID'のテーブルにNULL値を挿入できません。
Cannot insert the value NULL into column 'ID', table 'dbo.Action'; column does not allow nulls. INSERT fails
しかし、私は本当にこの問題を解決する方法がわかりません。
これは私のエラーです:
これはコードです:
public partial class AddLeaveType : System.Web.UI.Page
{
int id = 0;
SqlConnection conn = null;
SqlCommand cmd = null;
string connectionString = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlDataReader dr = null;
connectionString = ConfigurationManager.ConnectionStrings["LeaveManagementCS"].ConnectionString;
conn = new SqlConnection(connectionString);
string sql = "SELECT * FROM LeaveCategory";
try
{
cmd = new SqlCommand(sql, conn);
conn.Open();
dr = cmd.ExecuteReader();
while(dr.Read())
{
ListItem item = new ListItem(dr["Category"].ToString(), dr["Id"].ToString());
ddlCategory.Items.Add(item);
}
dr.Close();
}
catch (Exception ex)
{
lblOutput.Text = "Error Message: " + ex.Message;
}
finally
{
if (conn != null)
conn.Close();
}
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
connectionString = ConfigurationManager.ConnectionStrings["LeaveManagementCS"].ConnectionString;
conn = new SqlConnection(connectionString);
string sql = "INSERT INTO LeaveType (Type, Description, NumOfDays) ";
sql += "VALUES (@type, @desc, @nod)";
try
{
cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@type", tbType.Text);
cmd.Parameters.AddWithValue("@desc", tbDesc.Text);
cmd.Parameters.AddWithValue("@nod", tbNod.Text);
conn.Open();
int rows = cmd.ExecuteNonQuery();
if (rows > 0)
{
lblOutput.Text = "Added successfully";
}
}
catch (Exception ex)
{
lblOutput.Text = "Error Message:" + ex.Message;
}
finally
{
if (conn != null)
conn.Close();
}
}
}
正しい出力:
彼は接続を閉じているので大丈夫だと思います。クローズはリフレクタで見ればかなりのものです。 – Cato
はい、しかしグローバル変数は常にです危険なビジネス。そして、私は彼がこの文脈でグローバル接続オブジェクトからどんな利点を得るのか見当たりません。 – Steve
ええ、私は同意します、何も得られず、どこかで間違って行くことができます – Cato