0

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

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

谁能告诉我代码中有什么问题。

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
4

2 回答 2

0

有几种方法可以解决这个问题:

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

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

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

于 2015-02-07T15:45:39.777 回答
-1

myCommand.ExecuteNonQuery()

然后写

sqlconn.Close()

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

而且,我们的+名称+价值在哪里?比如,mycommand.addwithvalue("name", value place)

于 2013-03-18T06:35:27.383 回答