tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
871
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    real-insanity real-insanity ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Viersen, Germany
    Beiträge
    102
    Hallo zusammen,

    bei meinem SQLite-Tabelleneditor bekomm ich, wenn ich Tabellen mit einem DateTime-Feld, ändern will immer wieder folgende Exception:

    [08.12.2011 22:20:32] frmTableEditor.dgvTableContent_CellEndEdit(System.Object sender,System.Windows.Forms.DataGridViewCellEventArgs e): Parallelitätsverletzung: Der UpdateCommand hat sich auf 0 der erwarteten 1 Datensätze ausgewirkt.

    Hier meine Form mit den entsprechenden Methoden:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    
    using System;
    using System.Windows.Forms;
    using SoundConductor.Common.Helper;
    using System.Data;
    using System.Data.SQLite ;
     
    namespace SoundConductor.forms
    {
        public partial class frmTableEditor : Form
        {
            DataHelper db = new DataHelper();
            SQLiteDataAdapter daTable = new SQLiteDataAdapter();
            DataSet dsTables = new DataSet();
            DataSet dsTableContent = new DataSet();
     
            private string tableName = "";
            private bool showID = false;
            private bool showTables = false;
     
            public bool ShowTables
            {
                get { return showTables; }
                set { showTables = value; }
            }
     
            public bool ShowID
            {
                get { return showID; }
                set { showID = value; }
            }
     
            public string TableName
            {
                set { tableName = value; }
            }
     
            public frmTableEditor()
            {
                InitializeComponent();
            }
     
            private void frmTableEditor_Load(object sender, EventArgs e)
            {
                try
                {
                    if (showTables == false)
                    {
                        dgvTableContent.Dock = DockStyle.Fill;
                        this.Text = string.Format(this.Text, tableName);
     
                        daTable = db.GetTable(this.tableName);
                        daTable.Fill(dsTables);
     
                        //set the DataGridView DataSource
                        dgvTableContent.DataSource = dsTables.Tables[0];
                        dgvTableContent.Columns["ID"].Visible = this.showID;
                    }
                    else
                    {
                        dgvTableContent.Dock = DockStyle.None;
                        DataSet Tables = db.GetTables();
                        if (Tables.Tables.Count > 0)
                        {
                            cboTables.DataSource = Tables.Tables[0];
                            cboTables.DisplayMember = "name";
                            cboTables.Refresh();
                        }
                    }
     
                    lblAttention.Visible = showTables;
                    lblTables.Visible = showTables;
                    cboTables.Visible = showTables;
                    //btnGo.Visible = showTables;
                    
                    
                }
                catch (Exception ex)
                {
                    DebugHelper.WriteToLog(ex.Message);
                }
            }
     
            private void btnSaveData_Click(object sender, EventArgs e)
            {
     
            }
          
            private void dgvTableContent_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                try
                {
                    //dgvTableContent.EndEdit();
                    daTable.Update(dsTableContent); 
                }
                catch (Exception ex)
                {
                    DebugHelper.WriteToLog(ex.Message);
                }
            }
     
            private void btnDeleteRow_Click(object sender, EventArgs e)
            {
                try
                {
                    dgvTableContent.Rows.RemoveAt(dgvTableContent.SelectedRows[0].Index);
                    daTable.Update(dsTableContent);
                }
                catch (Exception ex)
                {
                    DebugHelper.WriteToLog(ex.Message.ToString());
                }
            }
     
            private void cboTables_SelectedIndexChanged(object sender, EventArgs e)
            {
                try
                {
                    this.Text = string.Format(this.Text, cboTables.Text);
     
                    dsTableContent.Clear();
                    dsTableContent.Dispose();
                    dsTableContent = new DataSet();
     
                    daTable = db.GetTable(cboTables.Text);
                    daTable.Fill(dsTableContent);
     
                    dgvTableContent.AutoGenerateColumns = true;
                    dgvTableContent.DataSource = dsTableContent.Tables[0];
     
                    dgvTableContent.Columns["ID"].Visible = this.showID;
                    dgvTableContent.Refresh();
                    dgvTableContent.Update();
                }
                catch (Exception ex)
                {
                    DebugHelper.WriteToLog(ex.Message.ToString());
                }
            }
        }
    }

    Leider kann ich die Werte, meiner Meinugn nach, nicht mal eben so manipulieren, da es sich hierbei um eine generische maske handelt mit der ich die zu bearbeitende Tabelle auswählen kann.

    Wie ich gelesen habe, scheint das wirklich mit dem Datetime-Feld in verbindung zu stehen, da die Formate sich wohl unterscheiden.
    Meiner Erkenntnis nach, kann ich auch alle Tabellen, außer mit einem Datetime-Feld, ohne problem bearbeiten.

    Habt ihr da eine Mögliche Lösung? Ich find zum Verrecken nichts und verzweifle langsam dran.
     

  2. #2
    real-insanity real-insanity ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Viersen, Germany
    Beiträge
    102
    Auch auf die gefahr hin, dass ich pushe und ne Verwarnung kassiere, aber hat keine ne Ahnung was ich hie rmachen könnte? Ich habe schon fast alle Quellen bei Google durch und find auf Anhieb nichts womit ich was anfangen könnte

    Kurzes Feedback: ich habe mehrere Stunden beriets gegoogled aber nichts gefunden. Manche Quellen sagen, dass dies mit einem Dataset.Clear() und DataAdapter.Fill(Dataset) erledigt sei (http://www.codeproject.com/tips/4624...ffected-0.aspx), jedoch falsch gedacht. Auch der Hinweis, dass dies an Decimal-Felder liegt konnte ich auch nciht verifizieren. Habt ihr sonst noch eine Idee?
    Geändert von real-insanity (14.12.11 um 15:01 Uhr)
     

Ähnliche Themen

  1. [SQLite] Anfänger frage bzw C# und SQLite
    Von Lensen im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 14.12.11, 12:50
  2. SQLite mit JPA
    Von Shout im Forum Java
    Antworten: 0
    Letzter Beitrag: 01.06.10, 23:35
  3. C/C++ und sqlite
    Von lordfritte im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 23.09.07, 15:07
  4. SQLAbfrage in SQLite 2.1
    Von kaiuwe1 im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 05.06.07, 08:45
  5. sqlite für PHP
    Von lordfritte im Forum PHP
    Antworten: 5
    Letzter Beitrag: 31.05.07, 23:12