2
// Mono.Data.Sqlite.SQLiteDataAdapter.cs
5
// Robert Simpson (robert@blackcastlesoft.com)
7
// Adapted and modified for the Mono Project by
8
// Marek Habersack (grendello@gmail.com)
11
// Copyright (C) 2006 Novell, Inc (http://www.novell.com)
12
// Copyright (C) 2007 Marek Habersack
14
// Permission is hereby granted, free of charge, to any person obtaining
15
// a copy of this software and associated documentation files (the
16
// "Software"), to deal in the Software without restriction, including
17
// without limitation the rights to use, copy, modify, merge, publish,
18
// distribute, sublicense, and/or sell copies of the Software, and to
19
// permit persons to whom the Software is furnished to do so, subject to
20
// the following conditions:
22
// The above copyright notice and this permission notice shall be
23
// included in all copies or substantial portions of the Software.
25
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34
/********************************************************
35
* ADO.NET 2.0 Data Provider for Sqlite Version 3.X
36
* Written by Robert Simpson (robert@blackcastlesoft.com)
38
* Released to the public domain, use at your own risk!
39
********************************************************/
41
namespace Mono.Data.Sqlite
45
using System.Data.Common;
46
using System.ComponentModel;
49
/// Sqlite implementation of DbDataAdapter.
51
#if !PLATFORM_COMPACTFRAMEWORK
52
[DefaultEvent("RowUpdated")]
53
[ToolboxItem("Sqlite.Designer.SqliteDataAdapterToolboxItem, Sqlite.Designer, Version=1.0.31.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139")]
54
[Designer("Microsoft.VSDesigner.Data.VS.SqlDataAdapterDesigner, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
56
public sealed class SqliteDataAdapter : DbDataAdapter
58
private static object _updatingEventPH = new object();
59
private static object _updatedEventPH = new object();
62
/// This class is just a shell around the DbDataAdapter. Nothing from DbDataAdapter is overridden here, just a few constructors are defined.
65
/// Default constructor.
67
public SqliteDataAdapter()
72
/// Constructs a data adapter using the specified select command.
74
/// <param name="cmd">The select command to associate with the adapter.</param>
75
public SqliteDataAdapter(SqliteCommand cmd)
81
/// Constructs a data adapter with the supplied select command text and associated with the specified connection.
83
/// <param name="commandText">The select command text to associate with the data adapter.</param>
84
/// <param name="connection">The connection to associate with the select command.</param>
85
public SqliteDataAdapter(string commandText, SqliteConnection connection)
87
SelectCommand = new SqliteCommand(commandText, connection);
91
/// Constructs a data adapter with the specified select command text, and using the specified database connection string.
93
/// <param name="commandText">The select command text to use to construct a select command.</param>
94
/// <param name="connectionString">A connection string suitable for passing to a new SqliteConnection, which is associated with the select command.</param>
95
public SqliteDataAdapter(string commandText, string connectionString)
97
SqliteConnection cnn = new SqliteConnection(connectionString);
98
SelectCommand = new SqliteCommand(commandText, cnn);
102
/// Row updating event handler
104
public event EventHandler<RowUpdatingEventArgs> RowUpdating
106
add { base.Events.AddHandler(_updatingEventPH, value); }
107
remove { base.Events.RemoveHandler(_updatingEventPH, value); }
111
/// Row updated event handler
113
public event EventHandler<RowUpdatedEventArgs> RowUpdated
115
add { base.Events.AddHandler(_updatedEventPH, value); }
116
remove { base.Events.RemoveHandler(_updatedEventPH, value); }
120
/// Raised by the underlying DbDataAdapter when a row is being updated
122
/// <param name="value">The event's specifics</param>
123
protected override void OnRowUpdating(RowUpdatingEventArgs value)
125
EventHandler<RowUpdatingEventArgs> handler = base.Events[_updatingEventPH] as EventHandler<RowUpdatingEventArgs>;
128
handler(this, value);
132
/// Raised by DbDataAdapter after a row is updated
134
/// <param name="value">The event's specifics</param>
135
protected override void OnRowUpdated(RowUpdatedEventArgs value)
137
EventHandler<RowUpdatedEventArgs> handler = base.Events[_updatedEventPH] as EventHandler<RowUpdatedEventArgs>;
140
handler(this, value);
144
/// Gets/sets the select command for this DataAdapter
146
#if !PLATFORM_COMPACTFRAMEWORK
147
[DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
149
public new SqliteCommand SelectCommand
151
get { return (SqliteCommand)base.SelectCommand; }
152
set { base.SelectCommand = value; }
156
/// Gets/sets the insert command for this DataAdapter
158
#if !PLATFORM_COMPACTFRAMEWORK
159
[DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
161
public new SqliteCommand InsertCommand
163
get { return (SqliteCommand)base.InsertCommand; }
164
set { base.InsertCommand = value; }
168
/// Gets/sets the update command for this DataAdapter
170
#if !PLATFORM_COMPACTFRAMEWORK
171
[DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
173
public new SqliteCommand UpdateCommand
175
get { return (SqliteCommand)base.UpdateCommand; }
176
set { base.UpdateCommand = value; }
180
/// Gets/sets the delete command for this DataAdapter
182
#if !PLATFORM_COMPACTFRAMEWORK
183
[DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
185
public new SqliteCommand DeleteCommand
187
get { return (SqliteCommand)base.DeleteCommand; }
188
set { base.DeleteCommand = value; }