Здравствуйте, BKMan, Вы писали:
BKM>Здравствуйте. BKM>С# BKM>Есть БД MSSQL BKM>хочу программно добавить в БД таблицу
BKM>создаю таблицу
BKM>DataSet DS = new DataSet(); BKM>DataTable DT = new DataTable(); BKM>//копирую таблицу DT1 из DataSet BKM>DT = DS.DT1.Copy(); BKM>DT.TableName = "hello";
BKM>DataRow dr = DT.NewRow(); BKM>dr["D1"] = "1"; BKM>dr["D2"] = "2"; BKM>DT.Rows.Add(dr);
BKM>DS.Tables.Add(DT);
BKM>Как теперь мне добавить эту таблицу в Базу Данных? BKM>Спасибо.
Никак...
Почему да пототому что делаеться ето так
Dim SQLQuery as String = текст запроса
Dim CN as Data.Connection = New Data.Connection(СonnectionString)
Dim tr as Data.Transaction = New Data.Transaction
cn.transaction = tr
Dim cmd1 as Data.Command = New Data.Command(SQLQuery,cn)
Dim cmd2 as Data.Command = New Data.Command(SQLQuery,cn)
tr.Command = cmd1
Try
tr.Execute
////
tr.RoolBack
End try
Ето для 2005 насчет vb6 все гораздо проще...
В коде намерено допущены ошибки удачи!
D>Никак... D>Почему да пототому что делаеться ето так
D>Dim SQLQuery as String = текст запроса D>Dim CN as Data.Connection = New Data.Connection(СonnectionString) D>Dim tr as Data.Transaction = New Data.Transaction D>cn.transaction = tr D>Dim cmd1 as Data.Command = New Data.Command(SQLQuery,cn) D>Dim cmd2 as Data.Command = New Data.Command(SQLQuery,cn) D>tr.Command = cmd1 D>Try D>tr.Execute
D>//// D>tr.RoolBack D>End try
D>Ето для 2005 насчет vb6 все гораздо проще... D>В коде намерено допущены ошибки удачи!
Они известны!
Я разбирался с етим када пришлось писать прогу для покета(КПК)...
и вон енто дело выделял в отдельную функцию для отправки данных т.е. унифицировал...хотя можно и так...Вообщем-то не важно все равно работает ету методику я использую для создания динамических табличек после запросов...и пишу примерно так....
[/vb]
Public ReadOnly Property GetTable() as Data.DataTable
Get
Dim Conn as New Data.SQLCEServer.SQLCEConnection = New Data.SQLCEServer.SQLCEConnection(....)
Dim Table as Data.DataTable = New Data.DataTable(...)
Dim tad as Data.SqlCeServer.SqlCeDataAdapter = Data.SqlCeServer.SqlCeDataAdapter(Query,Conn)
Tadd.Fill(Table)
Return Table
End Get
Return Table
А ето насчет домашнего задания мсдн говорит так правильней)))хотя.....
Friend Sub Commit_Transaction(ByVal Query As String, ByVal cn As Data.SqlServerCe.SqlCeConnection)
cn.Open()
Dim tr As System.Data.SqlServerCe.SqlCeTransaction = cn.BeginTransaction()
Dim cmd1 As System.Data.SqlServerCe.SqlCeCommand = cn.CreateCommand()
Dim cmd2 As System.Data.SqlServerCe.SqlCeCommand = cn.CreateCommand()
cmd1.Connection = cn
cmd1.Transaction = tr
Try
cmd1.CommandText = Query
cmd1.ExecuteNonQuery()
tr.Commit()
Catch ex As Exception
MsgBox("Rollback action. Check Input values. Changes that you do would not be accept", MsgBoxStyle.Critical, "Critical Error")
tr.Rollback()
Finally
cn.Close()
End Try
End Sub
D>А ето насчет домашнего задания мсдн говорит так правильней)))хотя.....
D> Friend Sub Commit_Transaction(ByVal Query As String, ByVal cn As Data.SqlServerCe.SqlCeConnection) D> cn.Open() D> Dim tr As System.Data.SqlServerCe.SqlCeTransaction = cn.BeginTransaction() D> Dim cmd1 As System.Data.SqlServerCe.SqlCeCommand = cn.CreateCommand() D> Dim cmd2 As System.Data.SqlServerCe.SqlCeCommand = cn.CreateCommand() D> cmd1.Connection = cn D> cmd1.Transaction = tr D> Try D> cmd1.CommandText = Query D> cmd1.ExecuteNonQuery() D> tr.Commit() D> Catch ex As Exception D> MsgBox("Rollback action. Check Input values. Changes that you do would not be accept", MsgBoxStyle.Critical, "Critical Error") D> tr.Rollback() D> Finally D> cn.Close() D> End Try D> End Sub
D>Да а что будеш делать если в запросе ошибка?
В том примере я не показывал конструкции try/catch, но она предполагается. Необходимость транзакции в данном примере определяется какой именно текст в Query. Если там несколько операторов и минимум один из них изменяет данные, то возможно они нуждаются в транзакции, то да. Если там один оператор — в транзакции нет необходимости. Вот собственно, что я хотел сказать. Я не знаю откуда ты взял этот пример, но:
1. cmd2 — не используется никак. Если, бы использовалась, то возможно транзакция тоже была-бы необходима.
2. Выделенный фрагмент пример того как не надо делать. Надо так:
Иначе, транзакция и ее блокировки в БД будут висеть так долго, пока пользователь не соизволит нажать ОК в диалоге.
Re[6]: Добавление новой таблицы в БД
От:
Аноним
Дата:
10.05.06 09:17
Оценка:
Здравствуйте, _d_m_, Вы писали:
___>Здравствуйте, ddrakonn, Вы писали:
D>>А ето насчет домашнего задания мсдн говорит так правильней)))хотя.....
D>> Friend Sub Commit_Transaction(ByVal Query As String, ByVal cn As Data.SqlServerCe.SqlCeConnection) D>> cn.Open() D>> Dim tr As System.Data.SqlServerCe.SqlCeTransaction = cn.BeginTransaction() D>> Dim cmd1 As System.Data.SqlServerCe.SqlCeCommand = cn.CreateCommand() D>> Dim cmd2 As System.Data.SqlServerCe.SqlCeCommand = cn.CreateCommand() D>> cmd1.Connection = cn D>> cmd1.Transaction = tr D>> Try D>> cmd1.CommandText = Query D>> cmd1.ExecuteNonQuery() D>> tr.Commit() D>> Catch ex As Exception D>> MsgBox("Rollback action. Check Input values. Changes that you do would not be accept", MsgBoxStyle.Critical, "Critical Error") D>> tr.Rollback() D>> Finally D>> cn.Close() D>> End Try D>> End Sub
D>>Да а что будеш делать если в запросе ошибка?
___>В том примере я не показывал конструкции try/catch, но она предполагается. Необходимость транзакции в данном примере определяется какой именно текст в Query. Если там несколько операторов и минимум один из них изменяет данные, то возможно они нуждаются в транзакции, то да. Если там один оператор — в транзакции нет необходимости. Вот собственно, что я хотел сказать. Я не знаю откуда ты взял этот пример, но: ___>1. cmd2 — не используется никак. Если, бы использовалась, то возможно транзакция тоже была-бы необходима. ___>2. Выделенный фрагмент пример того как не надо делать. Надо так: ___>
___>Иначе, транзакция и ее блокировки в БД будут висеть так долго, пока пользователь не соизволит нажать ОК в диалоге.
По поводу cmd2 на офф сайте мсдн говориться, что так правильно создавать пустой обект....
По поводу месаги ето удобно в режиме отладки...как мне кажеться видеть смог ли ты заставить пользователи вводить данные так чтоб все делалось.
Пример етот ето мною написаный код....Нигде я его не брал.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, _d_m_, Вы писали:
А>По поводу cmd2 на офф сайте мсдн говориться, что так правильно создавать пустой обект....
А зачем тебе нужен пустой объект класса SqlCommand ?
А>По поводу месаги ето удобно в режиме отладки...как мне кажеться видеть смог ли ты заставить пользователи вводить данные так чтоб все делалось.
А>Пример етот ето мною написаный код....Нигде я его не брал.