数据表是空的?我错过了什么? [英] Datatable is empty? What am I missing?
本文介绍了数据表是空的?我错过了什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨
我已经将我的通用列表转换为数据表,但是有些错误,因为它是空的。
我的转换是对的吗?如何将会话设置为数据表,以便知道在哪里找到值?
private void opretOrdre()
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings [ ConnectionString]。ToString();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = INSERT INTO ordre(dato,navn,efternavn,mobil,adresse,mail,postnr ,bynavn)VALUES(GETDATE(),@ navn,@ ferternavn,@ mobil,@ aderesse,@ mail,@ posttnr,@ bynavn); SELECT SCOPE_IDENTITY();
cmd.Parameters.Add( @ navn,SqlDbType.VarChar ).Value = TextBox_navn.Text;
cmd.Parameters.Add( @ efternavn,SqlDbType.VarChar).Value = TextBox_efternavn.Text;
cmd.Parameters.Add( @ mobil,SqlDbType.VarChar).Value = TextBox_mobil.Text;
cmd.Parameters.Add( @ adresse,SqlDbType.VarChar).Value = TextBox_adresse.Text;
cmd.Parameters.Add( @ mail,SqlDbType.VarChar).Value = TextBox_mail.Text;
cmd.Parameters.Add( @ postnr,SqlDbType.VarChar).Value = TextBox_postnr.Text;
cmd.Parameters.Add( @ bynavn,SqlDbType.VarChar).Value = TextBox_by.Text;
conn.Open();
object orderId = cmd.ExecuteScalar();
conn.Close();
// SÅskalvi bruge de parametre der skal til for kunne skrive til vore OrdrerLinier表格
// Og evt。 opdatere vores produkts lagerbeholdning
// ############ ############ //
// SÅtil vores ordrerlinier
// fk_ordre - den fra object'et
cmd.Parameters.Add( @ fk_ordre,SqlDbType.Int).Value = orderId;
// fk_produktId - fra session _kurv。 Sættesnu直到0,den den skal ind iforeachløkkenogånsværdi。
cmd.Parameters.Add( @ fk_frugt_id,SqlDbType.Int).Value = 0 ;
cmd.Parameters.Add( @ fk_deli_id,SqlDbType.Int).Value = 0 ;
cmd.Parameters.Add( @ fk_groent_id,SqlDbType.Int).Value = 0 ;
// Produkt antal - sammen som Id'et。 Sættestil0ogfårværdiieøkken
cmd.Parameters.Add( @ Antal ,SqlDbType.Int).Value = 0 ;
cmd.Parameters.Add( @ frugt_id ,SqlDbType.VarChar).Value = 0 ;
cmd.Parameters.Add( @ deli_id,SqlDbType.VarChar).Value = 0 ;
cmd.Parameters.Add( @ groent_id,SqlDbType.VarChar).Value = 0 ;
列表< ValgtFrugt> valgteFrugter =(List< ValgtFrugt>)会话[ ValgteFrugter];
var dataTable = new DataTable(Session [ ValgteFrugter]。ToString());
dataTable.Columns.Add( FrugtID, typeof ( int ));
dataTable.Columns.Add( FrugtNavn, typeof ( string ));
dataTable.Columns.Add( Antal, typeof ( int ));
dataTable.Columns.Add( FrugtVaerdi, typeof ( int ));
foreach (ValgtFrugt frugt in valgteFrugter)
{
dataTable.Rows.Add(frugt.FrugtID,frugt.FrugtNavn,frugt.Antal,frugt.FrugtVaerdi);
}
列表< ValgtGroent> valgteGroent =(List< ValgtGroent>)会话[ ValgteGroent];
var dataTable1 = new DataTable(会话[ ValgteGroent]。ToString());
dataTable1.Columns.Add( GroentID, typeof ( int ));
dataTable1.Columns.Add( GroentNavn, typeof ( string ));
dataTable1.Columns.Add( AntalGroent, typeof ( int ));
dataTable1.Columns.Add( GroentVaerdi, typeof ( int ));
foreach (ValgtGroent groent in valgteGroent)
{
dataTable1.Rows.Add(groent.GroentID,groent.GroentNavn,groent.AntalGroent,groent.GroentVaerdi);
}
列表< ValgtDeli> valgteDeli =(List< ValgtDeli>)会话[ ValgteDeli];
var dataTable2 = new DataTable(Session [ ValgteDeli]。ToString());
dataTable2.Columns.Add( DeliID, typeof ( int ));
dataTable2.Columns.Add( DeliNavn, typeof ( string ));
dataTable2.Columns.Add( Antal, typeof ( int ));
foreach (ValgtDeli delikatesse in valgteDeli)
{
dataTable2.Rows.Add(delikatesse.DeliID,delikatesse.DeliNavn,delikatesse.Antal);
}
DataTable dtAll = new DataTable();
dtAll = dataTable.Copy();
dtAll.Merge(dataTable1, true );
dtAll.Merge(dataTable2, true );
conn.Open();
foreach (DataRow row in dtAll.Rows)
{
cmd.CommandText = @ INSERT INTO ordre_linie
(fk_ordre_id,fk_frugt_id,fk_deli_id,fk_groent_id, antal)
VALUES(@ fk_ordre,@ fk_frugt_id,@ fk_deli_id,@ fk_groent_id,@ Antal);
cmd.Parameters [ @ fk_frugt_id]。值=行[ FrugtID];
cmd.Parameters [ @ fk_deli_id]。值=行[ DeliID];
cmd.Parameters [ @ fk_groent_id]。值=行[ GroentID];
cmd.Parameters [ @ Antal]。值=行[ Antal];
cmd.ExecuteNonQuery();
}
conn.Close();
Session.Abandon();
Response.Redirect( tak.aspx);
}
希望有人可以帮助我。
/ Tina
解决方案
每个循环的列不匹配
Hi
I have been converted my generic list to a datatable, but something is wrong because is empty.
Is my conversion right? How do I set the session to the datatable, so it know where to find the values??
private void opretOrdre()
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO ordre (dato, navn, efternavn, mobil, adresse, mail, postnr, bynavn) VALUES(GETDATE(), @navn, @efternavn, @mobil, @adresse, @mail, @postnr, @bynavn); SELECT SCOPE_IDENTITY()";
cmd.Parameters.Add("@navn", SqlDbType.VarChar).Value = TextBox_navn.Text;
cmd.Parameters.Add("@efternavn", SqlDbType.VarChar).Value = TextBox_efternavn.Text;
cmd.Parameters.Add("@mobil", SqlDbType.VarChar).Value = TextBox_mobil.Text;
cmd.Parameters.Add("@adresse", SqlDbType.VarChar).Value = TextBox_adresse.Text;
cmd.Parameters.Add("@mail", SqlDbType.VarChar).Value = TextBox_mail.Text;
cmd.Parameters.Add("@postnr", SqlDbType.VarChar).Value = TextBox_postnr.Text;
cmd.Parameters.Add("@bynavn", SqlDbType.VarChar).Value = TextBox_by.Text;
conn.Open();
object orderId = cmd.ExecuteScalar();
conn.Close();
//SÅ skal vi bruge de parametre der skal til for at kunne skrive til vore OrdrerLinier Tabel
//Og evt. opdatere vores produkts lagerbeholdning
//########################//
//SÅ til vores ordrerlinier
//fk_ordre - den fra object'et
cmd.Parameters.Add("@fk_ordre", SqlDbType.Int).Value = orderId;
//fk_produktId - fra session _kurv. Sættes nu til 0, den den skal ind i foreach løkken og få sin værdi.
cmd.Parameters.Add("@fk_frugt_id", SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@fk_deli_id", SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@fk_groent_id", SqlDbType.Int).Value = 0;
//Produkt antal - sammen som Id'et. Sættes til 0 og får værdi i løkken
cmd.Parameters.Add("@Antal", SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@frugt_id", SqlDbType.VarChar).Value = 0;
cmd.Parameters.Add("@deli_id", SqlDbType.VarChar).Value = 0;
cmd.Parameters.Add("@groent_id", SqlDbType.VarChar).Value = 0;
List<ValgtFrugt> valgteFrugter = (List<ValgtFrugt>)Session["ValgteFrugter"];
var dataTable = new DataTable(Session["ValgteFrugter"].ToString());
dataTable.Columns.Add("FrugtID", typeof(int));
dataTable.Columns.Add("FrugtNavn", typeof(string));
dataTable.Columns.Add("Antal", typeof(int));
dataTable.Columns.Add("FrugtVaerdi", typeof(int));
foreach (ValgtFrugt frugt in valgteFrugter)
{
dataTable.Rows.Add(frugt.FrugtID, frugt.FrugtNavn, frugt.Antal, frugt.FrugtVaerdi);
}
List<ValgtGroent> valgteGroent = (List<ValgtGroent>)Session["ValgteGroent"];
var dataTable1 = new DataTable(Session["ValgteGroent"].ToString());
dataTable1.Columns.Add("GroentID", typeof(int));
dataTable1.Columns.Add("GroentNavn", typeof(string));
dataTable1.Columns.Add("AntalGroent", typeof(int));
dataTable1.Columns.Add("GroentVaerdi", typeof(int));
foreach (ValgtGroent groent in valgteGroent)
{
dataTable1.Rows.Add(groent.GroentID, groent.GroentNavn, groent.AntalGroent, groent.GroentVaerdi);
}
List<ValgtDeli> valgteDeli = (List<ValgtDeli>)Session["ValgteDeli"];
var dataTable2 = new DataTable(Session["ValgteDeli"].ToString());
dataTable2.Columns.Add("DeliID", typeof(int));
dataTable2.Columns.Add("DeliNavn", typeof(string));
dataTable2.Columns.Add("Antal", typeof(int));
foreach (ValgtDeli delikatesse in valgteDeli)
{
dataTable2.Rows.Add(delikatesse.DeliID, delikatesse.DeliNavn, delikatesse.Antal);
}
DataTable dtAll = new DataTable();
dtAll = dataTable.Copy();
dtAll.Merge(dataTable1, true);
dtAll.Merge(dataTable2, true);
conn.Open();
foreach (DataRow row in dtAll.Rows)
{
cmd.CommandText = @"INSERT INTO ordre_linie
(fk_ordre_id, fk_frugt_id, fk_deli_id, fk_groent_id, antal)
VALUES (@fk_ordre, @fk_frugt_id, @fk_deli_id, @fk_groent_id, @Antal)";
cmd.Parameters["@fk_frugt_id"].Value = row["FrugtID"];
cmd.Parameters["@fk_deli_id"].Value = row["DeliID"];
cmd.Parameters["@fk_groent_id"].Value = row["GroentID"];
cmd.Parameters["@Antal"].Value = row["Antal"];
cmd.ExecuteNonQuery();
}
conn.Close();
Session.Abandon();
Response.Redirect("tak.aspx");
}
Hope someone could help me.
/Tina
解决方案
Column mismatch in your for each loops
这篇关于数据表是空的?我错过了什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文