INSERT语句失败 - 外键冲突 [英] INSERT statement fails - Foreign key conflict
问题描述
我已经做了很多次了
大图:
带有SQL Server 2008 R2数据库的CRUD WinForms应用程序。 />
我添加了一些新东西,而且我没有插手的东西现在坏了。
代码是标准的,没有异国情调这里它在最后一次更改之前有效。
I''ve done this numerous times
Big picture:
CRUD WinForms application with SQL Server 2008 R2 database.
I ''ve added few new things and one which I haven''t meddled with is now broken.
Code is standard, nothing exotic here and it worked before last changes.
try{
//...
trans = _connection.BeginTransaction();
//adapter responsible for particular parent table
_workingOrdersAdapter.Transaction = trans;
_rawMaterialsStockAdapter.Transaction = trans;
_stockEntriesAdapter.Transaction = trans;
_stockEntriesItemsAdapter.Transaction = trans;
_stockReservationAdapter.Transaction = trans;
_mixingPlanUtemsAdapter.Transaction = trans;
retval = _workingOrdersAdapter.Update(dataSet.WorkingOrders);
retval += _mixingPlanUtemsAdapter.Update(dataSet.MixingPlanItems.Select("","", DataViewRowState.Deleted));
retval += _mixingPlanUtemsAdapter.Update(dataSet.MixingPlanItems.Select("","", DataViewRowState.ModifiedCurrent));
retval += _rawMaterialsStockAdapter.Update(dataSet.RawMaterialsStock);
retval += _stockEntriesAdapter.Update(dataSet.StockEntries);
retval += _stockEntriesItemsAdapter.Update(dataSet.StockEntryItems);
//here it fails. grrrrr
retval += _mixingPlanUtemsAdapter.Update(dataSet.MixingPlanItems.Select("", "", DataViewRowState.Added));
//this line is new.
retval += _stockReservationAdapter.Update(dataSet.StockReservations);
trans.Commit();
}catch(SqlException sqlex)
{
//...
}
更新时从一个数据适配器INSERT上的数据集到数据库的数据失败:
INSERT语句与FOREIGN KEY约束FK_MixingPlanItems_WorkingOrders冲突。冲突发生在数据库Recepture,表dbo.WorkingOrders,列''WorkingOrderID''。
该声明已被终止。
< br $>
WTH?!?
当我在Management Studio中执行查询时,它运行正常。
这是一个简单的INSERT查询。
更新数据时(使用UPDATE查询)它会按原样运行。
到目前为止,我已完成以下操作:
多次配置数据适配器。
删除并再次添加特定适配器。
删除并添加了DB中的特定表连接。
如果我感到难以理解,请原谅我睡不着觉。 :(
When updating data from dataset to DB on one data adapter INSERT fails:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_MixingPlanItems_WorkingOrders". The conflict occurred in database "Recepture", table "dbo.WorkingOrders", column ''WorkingOrderID''.
The statement has been terminated.
WTH?!?
When I execute query in Management Studio it works perfectly.
It is a simple INSERT query.
When updating data (with UPDATE query) it runs as it should.
So far I have done the following:
Configured data adapter several times.
Removed and added particular adapter again.
Removed and added particular table connection in DB.
Please excuse me if I am being incomprehensible I have''t slept much. :(
推荐答案
GlobalClass c = new GlobalClass();
protected void imgbtnsave_Click(object sender,ImageClickEventArgs e)
{
OracleCommand InsertUser = new OracleCommand(ins_domain_info,con);
InsertUser.CommandType = CommandType.StoredProcedure;
InsertUser.Parameters.Add(@ domain_info_url, OracleDbType.Varchar2);
InsertUser.Parameters [@ domain_info_url]。Value = txt_url.Text;
InsertUser.Parameters.Add(@ website_registrant,OracleDbType.Varchar2);
InsertUser.Parameters [@ website_registrant]。Value = txt_websiteregistrant.Text;
InsertUser.Parameters.Add(@ created_date,OracleDbType.Date);
InsertUser.Parameters [@ created_date] .Value = txt_createddate.Text;
InsertUser.Parameters.Add(@ expiry_date,OracleDbType.Date);
InsertUser.Parameters [ @expiry_date]。值= txt_expirydate.Text;
InsertUser.Parameters.Add(@ domain_age_in_years,OracleDbType.Varchar2 );
InsertUser.Parameters [@ domain_age_in_years]。Value = txt_domainage.Text;
InsertUser.Parameters.Add(@ last_updated,OracleDbType.Date);
InsertUser.Parameters [@ last_updated]。Value = txt_lastupdate.Text;
InsertUser.Parameters.Add(@ top_level_url,OracleDbType.Varchar2);
InsertUser.Parameters [@ top_level_url]。Value = txt_TopLevelURL.Text;
InsertUser.Parameters.Add(@ domain_result,OracleDbType.Varchar2);
InsertUser.Parameters [@ domain_result]。Value = lbl_Domainresult.Text;
InsertUser.Parameters.Add(@ recommended,OracleDbType.Varchar2);
InsertUser.Parameters [@ recommended ] .Value = txt_domainrecommendation.Text;
InsertUser.Parameters.Add(@ REGISTER_PROSPECT_ID,OracleDbType.Varchar2);
InsertUser .Parameters [@ REGISTER_PROSPECT_ID]。Value = Session [seo_prosid]。ToString();
InsertUser.Parameters.Add(@ domain_info_id,OracleDbType .Int64,20);
InsertUser.Parameters [@ domain_info_id]。Direction = ParameterDirection.Output;
try
{
if(con.State == 0)
{
con.Open();
}
InsertUser.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
终于
$
MessageBox.Show(数据已成功保存);
clear();
con.Close();
}
}
GlobalClass c = new GlobalClass();
protected void imgbtnsave_Click(object sender, ImageClickEventArgs e)
{
OracleCommand InsertUser = new OracleCommand("ins_domain_info",con);
InsertUser.CommandType=CommandType.StoredProcedure;
InsertUser.Parameters.Add("@domain_info_url", OracleDbType.Varchar2);
InsertUser.Parameters["@domain_info_url"].Value = txt_url.Text;
InsertUser.Parameters.Add("@website_registrant", OracleDbType.Varchar2);
InsertUser.Parameters["@website_registrant"].Value = txt_websiteregistrant.Text;
InsertUser.Parameters.Add("@created_date", OracleDbType.Date);
InsertUser.Parameters["@created_date"].Value = txt_createddate.Text;
InsertUser.Parameters.Add("@expiry_date", OracleDbType.Date);
InsertUser.Parameters["@expiry_date"].Value = txt_expirydate.Text;
InsertUser.Parameters.Add("@domain_age_in_years", OracleDbType.Varchar2);
InsertUser.Parameters["@domain_age_in_years"].Value = txt_domainage.Text;
InsertUser.Parameters.Add("@last_updated", OracleDbType.Date);
InsertUser.Parameters["@last_updated"].Value = txt_lastupdate.Text;
InsertUser.Parameters.Add("@top_level_url", OracleDbType.Varchar2);
InsertUser.Parameters["@top_level_url"].Value = txt_TopLevelURL.Text;
InsertUser.Parameters.Add("@domain_result", OracleDbType.Varchar2);
InsertUser.Parameters["@domain_result"].Value = lbl_Domainresult.Text;
InsertUser.Parameters.Add("@recommendation", OracleDbType.Varchar2);
InsertUser.Parameters["@recommendation"].Value = txt_domainrecommendation.Text;
InsertUser.Parameters.Add("@REGISTER_PROSPECT_ID", OracleDbType.Varchar2);
InsertUser.Parameters["@REGISTER_PROSPECT_ID"].Value = Session["seo_prosid"].ToString();
InsertUser.Parameters.Add("@domain_info_id", OracleDbType.Int64, 20);
InsertUser.Parameters["@domain_info_id"].Direction = ParameterDirection.Output;
try
{
if (con.State == 0)
{
con.Open();
}
InsertUser.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
MessageBox.Show("Data Saved Successfully");
clear();
con.Close();
}
}
这篇关于INSERT语句失败 - 外键冲突的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!