关闭应用程序后,vb.net数据未保存sql compact database

时间:2013-03-18 06:27:29

标签: vb.net sql-server-ce

我做了一个小应用程序,将插入数据保存到表....

应用程序关闭后应用程序没有保存数据..

任何人都可以告诉我代码中的错误。

Imports System.Data
Imports System.Data.SqlServerCe


Public Class Form1

Public connstring As New String("Data Source=|DataDirectory|\test_db.sdf")
Public sqlconn As New SqlCeConnection(connstring)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim name As New String("jaifar")
    Dim myCommand As New SqlCeCommand("Insert Into table1 (id) Values('" + name + "')", sqlconn)
    If sqlconn.State = Data.ConnectionState.Closed Then sqlconn.Open()
    myCommand.ExecuteNonQuery()
    Me.Table1TableAdapter.Fill(Me.Test_dbDataSet1.table1)
End Sub

Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    sqlconn.Close()
    sqlconn = Nothing
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'Test_dbDataSet1.table1' table. You can move, or remove it, as needed.
    Me.Table1TableAdapter.Fill(Me.Test_dbDataSet1.table1)

 End Sub
End Class

2 个答案:

答案 0 :(得分:0)

解决这个问题的方法很少:

  1. 如果在“解决方案资源管理器”窗口中选择本地数据库文件,则会在“属性”窗口中看到名为“复制到输出”的属性。默认情况下,它设置为“始终复制”,这意味着在每个构建中,项目文件夹中的数据文件将被复制到输出文件夹,覆盖现有数据文件(如果有)。您可以将此属性设置为“从不复制”,然后手动将数据文件的副本放在输出文件夹中。这样,在后续构建中,项目系统会将数据文件保留在输出文件夹中,而不是尝试使用项目中的数据文件覆盖它。缺点是您仍然有两个副本,因此在使用应用程序修改数据库文件后,如果要在项目中处理这些更改,则需要手动将其复制到项目中,反之亦然。

  2. 您可以将数据文件保留在项目之外,并在Database Explorer中创建与它的连接。当IDE要求您将文件带入项目时,请说不。这样,设计时和运行时都将使用相同的数据文件,但缺点是连接字符串中的路径将被硬编码,因此共享项目和部署应用程序将更加困难。在部署应用程序之前,只需确保使用相对路径替换设置中的完整路径。

  3. 来源:https://arnulfo.wordpress.com/2007/07/21/visual-studio-and-local-databases/

答案 1 :(得分:-1)

myCommand.ExecuteNonQuery()

然后写

sqlconn.Close()

因为,当你执行write时,最好关闭它。 您必须知道保存到数据集与数据库不一样。数据集暂时在您的程序中,意味着仍然没有在数据库中进行更改。

并且,我们的+名称+值在哪里? 喜欢, mycommand.addwithvalue(“name”,值位置)