Использование базы данных в .NET - PullRequest
2 голосов
/ 26 марта 2010

ОБНОВЛЕННЫЙ ВОПРОС:

Хорошо, я собираюсь упростить свой вопрос, так как не знаю, как ответить на ваши вопросы.

Скажем, я создаю новое приложение Windows Forms, затем Project-> Add New Item-> Local Database.

Затем в Database Explorer я создаю таблицу («testtable») и присваиваю ей столбец «ID» и «VALUE».

Можете ли вы предоставить мне шаги для простого добавления строки в базу данных из кода?

СТАРЫЙ ВОПРОС:

Я пытался что-то сделать что я думаю было бы очень легко, но никогда не использовал C # раньше, и я возникли проблемы с деталями. я просто хотите использовать базу данных SQL с Visual C # Express 2008.

Для тестирования у меня есть сетка данных в моей форме, которая может отражать изменения в ДБ.

Если я использую это:

codesTableAdapter.Fill(dataSet1.codes);

Сеть данных (набор данных) заполнится информация из базы данных sql.

Если я тогда сделаю что-то вроде этого:

codesTableAdapter.InsertQuery(txtCode.Text,txtName.Text);
codesTableAdapter.Fill(dataSet1.codes);
codesTableAdapter.Update(dataSet1);
dataSet1.AcceptChanges();

Таблица данных отражает изменения, но если закрыть программу и перейти к База данных изменений не существует. Когда я снова открываю программу изменений там нет.

У меня такое ощущение, что это не слишком ясно поскольку мое понимание здесь очень низкое поэтому, пожалуйста, дайте мне знать, что другая информация нужен.

Ответы [ 5 ]

2 голосов
/ 15 апреля 2010

Действительно трудно понять, что происходит, не видя ваш код, но я сделаю некоторые предположения:

Скажем, я создаю новое приложение Windows Forms, затем Project-> Add New Item-> Local Database

Это создаст пустой файл .SDF SQL Server Compact Edition в вашем проекте. Вы можете редактировать этот файл из Visual Studio или SQL CE Query Analyzer.

Затем в Database Explorer я создаю таблицу («testtable») и присваиваю ей столбец «ID» и «VALUE».

Это создаст пустую таблицу в вашем файле .SDF. Это довольно плохие имена, но для целей тестирования мы можем их использовать.

Можете ли вы предоставить мне шаги, чтобы просто добавить строку в базу данных из кода?

System.Data.SqlServerCe предоставляет методы для управления файлами .SDF. Чтобы добавить строку в тестовую таблицу:

using (SqlCeConnection myConnection = new SqlCeConnection(@"Data Source=Path\To\Your\SDF\file.sdf;"))
using (SqlCeCommand myCmd = myConnection.CreateCommand())
{
    myCmd.CommandType = CommandType.Text;
    myCmd.CommandText = "INSERT INTO testtable (ID, [VALUE]) VALUES (1, whatever)";
    myConnection.Open();
    myCmd.ExecuteNonQuery();
}

Знайте, что Path\To\Your\SDF\file.sdf может быть не тем, что вы думаете; Visual Studio по умолчанию копирует файлы проекта в выходной путь сборки проекта (например, путь \ к \ вашему \ проекту \ bin \ Debug \ file.sdf). Если вы измените встроенный файл, а затем перестроите свой проект, исходный файл .SDF будет повторно скопирован в ваш путь вывода, уничтожив все изменения, которые вы внесли в файл проекта. Если это не то, чего вы хотите, вам придется объяснить, чего вы пытаетесь достичь.

Например, чтобы изменения применялись только к встроенному файлу проекта, измените свойство VS «Копировать в выходной каталог» файла данных в VS на «Копировать, если новее».

0 голосов
/ 26 марта 2010

Возможно, вы можете попробовать что-то вроде этого.

DataTable dt = dataSet1.Tables["codes"];
codesTableAdapter.InsertQuery(txtCode.Text,txtName.Text); 
codesTableAdapter.Fill(dt); 
// Add a new row to your datatable;
DataRow dr = dt.NewRow();
dr["ID"] = 100;
dr["Value"] = "This is my value";  // this is assumeing the 'Value' columns is of type string.
dt.Rows.Add(dr);

codesTableAdapter.Update(dataSet1); 
dataSet1.AcceptChanges(); 
0 голосов
/ 26 марта 2010

Чтобы лучше посоветоваться, было бы полезно, если бы вы могли опубликовать свое заявление sql. Может быть, ваши строки не находятся в режиме обновления?

Также в Интернете есть тонны материалов об этой теме - например, http://authors.aspalliance.com/aspxtreme/sys/data/common/DataAdapterClassUpdate.aspx

0 голосов
/ 26 марта 2010

Одна потенциальная проблема заключается в том, что вы смотрите на другую копию базы данных, чем вы вставляете. Вы используете SqlCE? База данных может быть скопирована в выходной каталог и, следовательно, может быть другой БД, чем та, которую вы просматриваете ...

0 голосов
/ 26 марта 2010

находятся ли ваши объекты DataRow в вашем наборе данных в режиме редактирования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...