Я пытаюсь создать и написать по строкам базу данных на основе службы с текстовым полем, без дополнительных столбцов, только для индекса и фразы. Так как новичкам нужна помощь или полезный пример для моего случая, чтобы выяснить, что я делаю неправильно здесь.Запись строки в базу данных на основе службы с текстовым полем
Так что я сделал, моя база данных:
CREATE TABLE [dbo].[User]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[Phrase] TEXT NOT NULL
)
В столбце Id Свойства спецификации идентичности Я изменил (это тождество) Верно, затем Update dbo.User [Design], а затем обновить к моему SampleDatabase .mdf, затем Показать таблицы данных моя вкладка Пользователь, а затем я добавил новый пункт LINQ к классам SQL к моему проекту как DATACLASS и я добавил в мой каталог Program.cs AppDomain.CurrentDomain.SetData("DataDirectory", System.Environment.CurrentDirectory.Replace("\\bin\\Debug", ""));
таким образом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace XX_7_DATABASE_LOCAL
{
static class Program
{
[STAThread]
static void Main()
{
AppDomain.CurrentDomain.SetData("DataDirectory", System.Environment.CurrentDirectory.Replace("\\bin\\Debug", ""));
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
И здесь моя Form1:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace XX_7_DATABASE_LOCAL
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
User newUser = new User();
newUser.Phrase = (textBox1.Text);
DataClassDataContext dbCtx = new DataClassDataContext();
dbCtx.Users.InsertOnSubmit(newUser);
try
{
dbCtx.SubmitChanges();
MessageBox.Show("Successful!");
}
catch(Exception ex)
{
MessageBox.Show("Fail!");
}
}
private void button2_Click(object sender, EventArgs e)
{
DataClassDataContext dbContext = new DataClassDataContext();
var getData = (
from x in dbContext.Users
select x
);
dataGridView1.DataSource = getData;
}
}
}
Так я заменил сообщение MessageBox.Show(ex.Message + ":" + ex.StackTrace);
, но не уверен, что это значит, и что я должен делать:
если спецификация Идентичность False, то пишет только одну строку в базу данных, но со второй, я получил это сообщение:
Попытка добавления пользователя, оставляя его идентификатор из него. Я имею в виду, если вы установили столбец идентификатора таблицы User в Identity, то ваша база данных должна выполнить задание для вас: оно автоматически увеличит идентификатор ... это причина вашей первой ошибки: когда IDENTITY_INSERT выключен, ваша база данных автоматически обрабатывает его – Forlani