Я хочу вставить новую запись в DataTable с помощью DataAdapter. В таблице Person есть 2 столбца. Имя и фамилия.
У меня есть код, как показано ниже.Невозможно вставить в базу данных с SqlDataAdapter и MSSqlServer в C#
SqlConnection connection;
DataSet dsPerson;
SqlDataAdapter adapter;
string connectionString = Properties.Resources.ConnectionString;
connection = new SqlConnection(connectionString);
dsPerson = new DataSet("PersonDataSet");
adapter = new SqlDataAdapter();
SqlCommand selectCommand = new SqlCommand("SELECT * FROM Person", connection);
adapter.SelectCommand = selectCommand;
adapter.Fill(dsPerson, "Person");
string insertQuery = "INSERT INTO Person(FirstName, LastName) VALUES (@FirstName, @LastName)";
SqlCommand insertCommand = new SqlCommand(insertQuery, connection);
insertCommand.Parameters.Add(new SqlParameter("@FirstName", SqlDbType.NVarChar));
insertCommand.Parameters["@FirstName"].SourceVersion = DataRowVersion.Current;
insertCommand.Parameters["@FirstName"].SourceColumn = "FirstName";
insertCommand.Parameters.Add(new SqlParameter("@LastName", SqlDbType.NVarChar));
insertCommand.Parameters["@LastName"].SourceVersion = DataRowVersion.Current;
insertCommand.Parameters["@LastName"].SourceColumn = "LastName";
adapter.InsertCommand = insertCommand;
Но когда я пытаюсь вставить новую запись в DataSet, она появляется в DataSet. Но он не вставляет новую запись в DataBase.
Код для вставки приведен ниже.
connection.Open();
DataRow newRow = dsPerson.Tables["Person"].NewRow();
newRow["FirstName"] = "Joseph";
newRow["LastName"] = "Sword";
dsPerson.Tables["Person"].Rows.Add(newRow);
dsPerson.Tables["Person"].AcceptChanges();
dsPerson.AcceptChanges();
adapter.Update(dsPerson, "Person");
connection.Close();
Я даже пытаюсь отследить запросы, отправленные на сервер sql С помощью Express Profiler. И я увидел, что он не отправляет команду вставки в базу данных.
В чем проблема? Как его решить?
Спасибо.