У меня есть форма, созданная программно, который содержит TextBox связанный с DataTable. Я использую базу данных Chinook. Некоторое поведение в порядке (чтение базы данных), но я не могу сохранить изменения в базе данных. Я не знаю, что случилось.C таблицы базы данных # обновление образуют форму, созданную программно
код SQL является (я использую SQL Server 2014):
CREATE TABLE [dbo].[Artist]
(
[ArtistId] INT NOT NULL,
[Name] NVARCHAR(120),
CONSTRAINT [PK_Artist] PRIMARY KEY CLUSTERED ([ArtistId])
);
GO
INSERT INTO [dbo].[Artist] ([ArtistId], [Name]) VALUES (1, N'AC/DC');
INSERT INTO [dbo].[Artist] ([ArtistId], [Name]) VALUES (2, N'Accept');
INSERT INTO [dbo].[Artist] ([ArtistId], [Name]) VALUES (3, N'Aerosmith');
INSERT INTO [dbo].[Artist] ([ArtistId], [Name]) VALUES (4, N'Alanis Morissette');
INSERT INTO [dbo].[Artist] ([ArtistId], [Name]) VALUES (5, N'Alice In Chains');
INSERT INTO [dbo].[Artist] ([ArtistId], [Name]) VALUES (6, N'Antônio Carlos Jobim');
INSERT INTO [dbo].[Artist] ([ArtistId], [Name]) VALUES (7, N'Apocalyptica');
INSERT INTO [dbo].[Artist] ([ArtistId], [Name]) VALUES (8, N'Audioslave');
INSERT INTO [dbo].[Artist] ([ArtistId], [Name]) VALUES (9, N'BackBeat');
...
код является (только новый проект с кнопкой в нем):
public partial class Form1 : Form
{
private SqlConnection con = new SqlConnection();
protected Form FForm;
private SqlCommand FSqlCommand = new SqlCommand();
protected BindingSource FBindingSource = new BindingSource();
protected SqlDataAdapter FSqlDataAdapter = new SqlDataAdapter();
protected DataSet FDataSet = new DataSet();
protected DataTable FDataTable = new DataTable();
public Form1()
{
InitializeComponent();
con.ConnectionString = "Data Source=***; Initial Catalog=Chinook; User ID=sa; Password=***";
con.Open();
}
private void button1_Click(object sender, EventArgs e)
{
FForm = new Form();
FForm.Visible = true;
FSqlDataAdapter = new SqlDataAdapter("SELECT * FROM Artist", con);
FSqlDataAdapter.Fill(FDataTable);
FBindingSource.DataSource = FDataTable;
TextBox tb = new TextBox();
tb.DataBindings.Add("Text", FBindingSource, "name", true);
tb.Left = 16;
tb.Top = 16;
tb.Width = 100;
FForm.Controls.Add(tb);
Button btnSave = new Button();
btnSave.Text = "Save";
btnSave.Left = 16;
btnSave.Top = 48;
btnSave.Width = 75;
FForm.Controls.Add(btnSave);
btnSave.Click += btnSave_Click;
}
private void btnSave_Click(object sender, EventArgs e)
{
SqlCommandBuilder cb = new SqlCommandBuilder(FSqlDataAdapter);
FSqlDataAdapter.Update(FDataTable);
FForm.Close();
}
}
Любые исключения или таблицы просто пустой/не обновляется? – cassandrad
@cassandrad: Таблицы заполнены исходными данными. Первым художником является AC/DC – jciberta