Из записи текстового поля сохранение временно сохранено не постоянно в базе данных access
Я сделал запись из Richtextbox1, и когда я нажал кнопку Сохранить, Она была успешно сохранена, но когда я закрыл отладку и снова запустил ее, ее не было в Datagridview1, а также в базе данных Ms Access, пожалуйста, помогите мне в этом...
Примечание : когда я нажимаю кнопку AddNew без ввода значения, она говорит: "
ExecuteReader requires an open and available Connection. The connection's current state is closed.
"или любезно предложите добавить, отредактировать, обновить, удалить запись нового исходного кода
Что я уже пробовал:
Imports System.Data.OleDb Public Class SongEntry Dim Provider As String Dim dataFile As String Dim connString As String Dim myConnection As OleDbConnection = New OleDbConnection Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox5.Clear() TextBox6.Clear() End Sub Private Sub SongEntry_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" dataFile = "C:\Users\User\Desktop\Worship\Worship\bin\Debug\Song.accdb" connString = Provider & dataFile myConnection.ConnectionString = connString myConnection.Open() Dim str As String str = "Insert into MAS_SONGS([SM_CODE],[SM_EDESC],[SM_TDESC],[SM_SONGL1],[SM_SONGL2]) values (?,?,?,?,?)" Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection) cmd.Parameters.Add(New OleDbParameter("SM_CODE", CType(TextBox3.Text, String))) cmd.Parameters.Add(New OleDbParameter("SM_EDESC", CType(TextBox1.Text, String))) cmd.Parameters.Add(New OleDbParameter("SM_TDESC", CType(TextBox2.Text, String))) cmd.Parameters.Add(New OleDbParameter("SM_SONGL1", CType(TextBox4.Text, String))) cmd.Parameters.Add(New OleDbParameter("SM_SONGL2", CType(TextBox5.Text, String))) Try cmd.ExecuteNonQuery() cmd.Dispose() myConnection.Close() TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox5.Clear() Catch ex As Exception MsgBox("saved") End Try End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Me.Close() End Sub Private Sub SongEntry_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown If e.KeyCode = Keys.Escape Then Me.Close() End If End Sub Private Sub TextBox4_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox4.KeyPress If e.KeyChar = Convert.ToChar(1) Then DirectCast(sender, TextBox).SelectAll() e.Handled = True End If End Sub Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Convert.ToChar(1) Then DirectCast(sender, TextBox).SelectAll() e.Handled = True End If End Sub Private Sub TextBox2_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Convert.ToChar(1) Then DirectCast(sender, TextBox).SelectAll() e.Handled = True End If End Sub Private Sub TextBox3_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox3.KeyPress If e.KeyChar = Convert.ToChar(1) Then DirectCast(sender, TextBox).SelectAll() e.Handled = True End If End Sub Private Sub TextBox5_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox5.KeyPress If e.KeyChar = Convert.ToChar(1) Then DirectCast(sender, TextBox).SelectAll() e.Handled = True End If End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click MASSONGSBindingSource.RemoveCurrent() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'for add TextBox1.Enabled = True TextBox2.Enabled = True TextBox3.Enabled = True TextBox4.Enabled = True TextBox5.Enabled = True TextBox6.Enabled = True ConnDB() Try mySQL = "Select SM_CODE from MAS_SONGS ORDER BY SM_CODE DESC" myCommand = New OleDbCommand(mySQL, myConnection) myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection) If myReader.Read = True Then TextBox3.Text = Val(myReader(0)) + 1 Else TextBox3.Text = 300001 End If Catch ex As Exception MsgBox(ex.Message) Finally myCommand.Dispose() myConnection.Close() End Try End Sub Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox6_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox6.KeyPress If e.KeyChar = Convert.ToChar(1) Then DirectCast(sender, TextBox).SelectAll() e.Handled = True End If End Sub End Class
Richard Deeming
Существует ли пустая версия базы данных Access как часть вашего проекта, настроенная на постоянное копирование в выходной каталог?
Member 14621280
я изменил копию в выходной каталог, чтобы копировать всегда, но та же ошибка
RickZeeland
Нехорошо, используйте только копию, если новые или ваши данные базы данных будут перезаписаны !
Было бы безопаснее поместить вашу базу данных в безопасное место, например C:\MyDatabase
Member 14621280
Должен ли я дать копию поновее... и моя база данных в папке \bin\отладки\данных mydatabase.# то #
RickZeeland
Это нормально, если вы понимаете, что при перестроении ваши изменения будут потеряны, так как ваша база данных в каталоге bin будет удалена.
Member 14621280
так что же мне делать
RickZeeland
Используйте 'Copy if newer' таким образом, когда вы строите свою базу данных в каталоге Bin, она не будет перезаписана.
Member 14621280
дай мне попробовать...
Richard MacCutchan
Я заметил в вашем коде, что если код сохранения выдает исключение, вы публикуете окно сообщений, отображающее слово "сохранено". Очевидно, что это не совсем правильно .
Member 14621280
Ты имеешь в виду ... я должен удалить это право?
Поймать ex как исключение
MsgBox("сохранено")
Member 14621280
Я сделал MsgBox (“A” & “B” работает нормально и успешно подключен, но когда приходит “c” в myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection) говорит, что ошибка чтения исключений” ie "ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения-закрыто."
Попробуй
в MySQL = "выбрать SM_CODE от того, MAS_SONGS по SM_CODE алфавиту"
MsgBox(“A”)
myCommand = New OleDbCommand(mySQL, myConnection)
MsgBox(“B”)
myReader = myCommand.ExecuteReader(CommandBehavior.Значение closeconnection)
MsgBox(“C”)
Если мой читатель.Чтение = Истина Тогда
TextBox3.Text = Val(myReader(0)) + 1
Еще
TextBox3.Text = 300001
Конец, Если
RickZeeland
Вы, наверное, забыли о моей связи.Открыть()
Member 14621280
я открылся здесь
rivate Sub Button6_Click(sender As Object, e As EventArgs) обрабатывает Button6.Click
Поставщик = "Поставщика=Майкрософт.Туз.Oledb для.12.0;Источник Данных="
файл данных = "C:\Users\User\Desktop\Worship\Worship\bin\Debug\Song.accdb"
connString = поставщик & файл данных
myConnection.ConnectionString = connString
myConnection.Открыть()
Тусклый str как струна
str = "вставить в значения MAS_SONGS([SM_CODE],[SM_EDESC],[SM_TDESC],[SM_SONGL1],[SM_SONGL2]) (?,?,?,?,?)"
Дим объект oledbcommand cmd в качестве стр = новый объект oledbcommand (, myConnection)
Member 14621280
вы можете увидеть полный исходный код выше пожалуйста
Richard MacCutchan
Нет, вы должны отобразить детали исключения. Когда исключение поймано, оно говорит вам, что что-то в блоке try не удалось, поэтому вы не должны отображать сообщение об успехе.
Richard MacCutchan
Мы не можем сказать, что может потерпеть неудачу. Вам нужно будет использовать свой отладчик, чтобы пройти через код и проследить, что происходит, когда вы делаете вставку.
Member 14621280
Можете ли вы предложить новый способ подключения БД или новый простой исходный код или любезно предложить добавить, отредактировать, обновить, удалить запись нового исходного кода
Richard MacCutchan
Почему ты думаешь, что это поможет? Пожалуйста, сделайте так, как я предложил, и выясните, почему ваша программа работает неправильно. Изменение кода, не зная, что не так, никогда не является хорошим решением.
Member 14621280
я могу принять, но у меня есть ошибка, но у меня нет средств решения... что же мне делать?..
Richard MacCutchan
Я объяснил, что вам нужно сделать: используйте отладчик, чтобы узнать, что происходит в вашем коде.
Member 14621280
даже после завершения моей записи и datagridview1 не показывает эти записи
Member 14621280
я допустил какую-то ошибку, например ... я создал module.vb в том, что я не изменил местоположение базы данных, где я хранил исходную базу данных, так что она была автоматически вычтена из моей предыдущей базы данных.. так что это была проблема...теперь она работает
Member 14621280
еще один запрос... у меня есть существующая база данных ms access, и я должен включить ее в Vb.net проект... но я хочу добавить новый столбец, переименовать какой-то текст, удалить что-то в ms access, но когда я это сделал vb.net form1 или datagridview1 не показывают, что я сделал... пожалуйста помогите мне
Richard MacCutchan
Вы должны открыть новый вопрос и показать код, который не работает. И, пожалуйста, предоставьте полную информацию о проблеме. Поговорка, "это не работает", не помогает.