数据表是空的?我错过了什么? [英] Datatable is empty? What am I missing?

查看:71
本文介绍了数据表是空的?我错过了什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




我已经将我的通用列表转换为数据表,但是有些错误,因为它是空的。



我的转换是对的吗?如何将会话设置为数据表,以便知道在哪里找到值?



  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆