no data is inserted to sqlce on resultset.insert() does it require primary key record...?

Answered no data is inserted to sqlce on resultset.insert() does it require primary key record...?

  • Friday, March 16, 2012 12:12 PM
     
      Has Code
                SqlCeConnection LocalCon = new SqlCeConnection(SqlConnString);
                LocalCon.Open();
                SqlCeTransaction InsertTransaction=LocalCon.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
                SqlCeResultSet SqlCeResEt=null;
                SqlCeUpdatableRecord TableRecord;
                SqlCeCommand InsertPromoCmd = LocalCon.CreateCommand();
                try
                {                
                    InsertPromoCmd.Transaction = InsertTransaction;
                    InsertPromoCmd.CommandText = "PromoTable";
                    InsertPromoCmd.CommandType = CommandType.TableDirect;
                    SqlCeResEt = InsertPromoCmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable | ResultSetOptions.Sensitive);
                    TableRecord = SqlCeResEt.CreateRecord();
    
                    TableRecord.SetValue(SqlCeResEt.GetOrdinal("PoneId"), PoneId);
    
    
                    TableRecord.SetValue(SqlCeResEt.GetOrdinal("EclipseId"), EclipseId);
    
    
                    TableRecord.SetValue(SqlCeResEt.GetOrdinal("Country"), Country);
    
    
                    TableRecord.SetValue(SqlCeResEt.GetOrdinal("BizGroup"), BizGroup);
    
    
                    TableRecord.SetValue(SqlCeResEt.GetOrdinal("PromoType"), PromoType);
    
    
                    TableRecord.SetValue(SqlCeResEt.GetOrdinal("ProgrammeType"), ProgramType);
    
    
                    TableRecord.SetDateTime(SqlCeResEt.GetOrdinal("StartDate"), StartDate);
    
                    TableRecord.SetDateTime(SqlCeResEt.GetOrdinal("EndDate"), EndDate);
                    SqlCeResEt.Insert(TableRecord,DbInsertOptions.PositionOnInsertedRow);
                    //SqlCeResEt.Update();
                    SqlCeResEt.Close();
                    InsertTransaction.Commit(CommitMode.Deferred);
                }            

    This is the DatBase table .....The masterId is autoincriment ......

    The insert() is not throwing any errors or exceptions.... but no data is being saved and how to know how many number of records are affected...


    $Kracker



    • Edited by SKracker Friday, March 16, 2012 12:13 PM Question didnot had Clarity
    • Edited by SKracker Friday, March 16, 2012 1:06 PM
    •  

All Replies

  • Friday, March 16, 2012 1:57 PM
     
     

    Hello,

    Follow the link below it may help you

    http://stackoverflow.com/questions/5016260/sqlce-upsert-update-or-insert-how-to-prepare-a-row-using-common-method

  • Saturday, March 17, 2012 4:27 AM
     
     
    Thanks but I've already seen that....My question is specefic on why am I unable to insert data ....

    $Kracker

  • Saturday, March 17, 2012 5:22 AM
     
     
    can anyone please help me.....

    $Kracker

  • Saturday, March 17, 2012 7:40 AM
     
     Answered Has Code
    > The insert() is not throwing any errors or exceptions.... but no data is being saved and how to know how many number of records are affected...


    try using the following example.  
       
    using System.Data;
    using System.Data.SqlServerCe;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                var path = @"c:\temp\test1.sdf";
                Create(path);
    
                var cc = new SqlCeConnection("Data Source=" + path);
                var cm = cc.CreateCommand();
                cm.CommandType = System.Data.CommandType.TableDirect;
                cm.CommandText = "test";
                cc.Open();
                try
                {
                    var rs = cm.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable);
                    try
                    {
                        var ti = rs.GetOrdinal("text");
                        var ii = rs.GetOrdinal("id");
                        for (int i = 0; i < 5; i++)
                        {
                            var re = rs.CreateRecord();
                            re.SetString(ti, "hello" + i);
                            rs.Insert(re, DbInsertOptions.PositionOnInsertedRow);
                            var id = rs.GetValue(ii);
                            System.Diagnostics.Trace.WriteLine(id);
                        }
                    }
                    finally
                    {
                        rs.Close();
                    }
                }
                finally
                {
                    cc.Close();
                }
    
                var dt = new DataTable();
                var ca = new SqlCeDataAdapter("select * from [test]", cc);
                ca.Fill(dt);
                new DataGridView {Dock = DockStyle.Fill, Parent = this, DataSource = dt };
            }
    
            private static void Create(string path)
            {
                if (System.IO.File.Exists(path) == false)
                {
                    var ce = new SqlCeEngine("Data Source=" + path);
                    ce.CreateDatabase();
                    var cc = new SqlCeConnection("Data Source=" + path);
                    var cm = cc.CreateCommand();
                    cm.CommandText = "create table [test] (id int identity, text nvarchar(100))";
                    try
                    {
                        cc.Open();
                        cm.ExecuteNonQuery();
                    }
                    finally
                    {
                        cc.Close();
                    }
                }
            }
        }
    }
    
     
     
    • Marked As Answer by SKracker Saturday, March 17, 2012 10:52 AM
    •  
  • Saturday, March 17, 2012 10:52 AM
     
     Answered Has Code

    got it...

    actually

    SqlConnString 

    was poiting some other SQL...

    Thanks guys...


    $Kracker

    • Marked As Answer by SKracker Saturday, March 17, 2012 10:52 AM
    •