вставить проблему в C #, используя sqlcommand - PullRequest
1 голос
/ 23 июля 2010

когда я запускаю этот sql:

insert into table1(ID,Name) values ('10','Saeed');

похоже, что запись была вставлена, и если я читаю таблицу, используя (select * from table1), она показывает мне вставленную запись, но после закрытия программы она исчезает.

это код:

string constr="Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|" +   
    "\\Database1.mdf;Integrated Security=True;User Instance=True";

SqlConnection con = new SqlConnection(constr);
con.Open();

SqlCommand cmd = new SqlCommand(
    "insert into st (ID,Name) values ('10','saeed');", con);

cmd.ExecuteNonQuery();
cmd.Close();

Я вставил в него некоторые записи вручную, и когда я читаю базу данных, записи, вставленные вручную, существуют.

Это не проблема транзакции, ее нельзя решить с помощью транзакции!

Ответы [ 5 ]

2 голосов
/ 23 июля 2010

Проблема звучит так, как будто вы начали транзакцию и забыли ее зафиксировать.Однако, если вы используете точный код, который вы опубликовали, это не является проблемой транзакции, потому что вы не используете его.

Это заставляет меня думать, что с вашей строкой соединения происходит что-то интересное.

Для пинки и хихиканья, пытаясь изменить строку подключения на что-то вроде этого

Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=True;
2 голосов
/ 23 июля 2010

Guess:
Вы работаете с SQL Server Express, и в вашем проекте «Database1.mdf» настроен (в окне свойств) для значения «Копировать в выходной каталог» «Всегда»

1 голос
/ 23 июля 2010

Попробуйте указать: «Начальный каталог = InstanceDB;»также, чтобы убедиться, что он не создает новое имя БД при перезапуске приложения.

0 голосов
/ 23 июля 2010

Я согласен с паскалем.Похоже, транзакция не совершается.

(отредактирован для обеспечения более четкого кода из моего комментария ниже)

con.Open(); 
trans = con.BeginTransaction(); 

SqlCommand cmd = new SqlCommand( "insert into st (ID,Name) values ('10','saeed');", con);

cmd.ExecuteNonQuery(); 
tran.Commit(); 
0 голосов
/ 23 июля 2010

ошибка в вашем коде его

con.Close();

не

cmd.Close();

нет метода закрытия для SqlCommand

...