将Visual Basic连接到本地数据库

时间:2014-03-11 13:49:18

标签: database vb.net storage

我对Visual Basic的本地数据库有疑问。到目前为止,我已成功:1。创建一个本地数据库,命名为Database1 2.创建一个包含值的表(用户名,密码,年份/部分,secretquestion,secretanswer)3。在form1中创建一个数据集(以获取form2的条目)4。在表格2中创建一个注册表格(5个标签/文本框,以获取用户名,密码,年份/部分,秘密,秘密)

这是我目前的Form2代码:

Public Class Form2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("Data Source=C:\Users\Bounty Hounds\AppData\Local\Temporary Projects\WindowsApplication1\Database1.sdf")
Dim cmd As New System.Data.SqlClient.SqlCommand
cmd.CommandType = System.Data.CommandType.Text
cmd.CommandText = "INSERT Username (user) Password (pass) Year/Section (yns) SecretQuestion (sq) SecretAnswer (sa)"
cmd.Connection = sqlConnection1
sqlConnection1.Open()
cmd.ExecuteNonQuery()
sqlConnection1.Close()
End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim user As String
user = TextBox1.Text
End Sub

Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
Dim pass As String
pass = TextBox2.Text
End Sub

Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
Dim yns As String
yns = TextBox3.Text
End Sub

Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged
Dim sq As String
sq = TextBox4.Text
End Sub

Private Sub TextBox5_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox5.TextChanged
Dim sa As String
sa = TextBox5.Text
End Sub
End Class

但是当我单击注册按钮时它会给我一个错误并指向sqlConnection1.Open()行,错误是:“建立与SQL Server的连接时发生网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确以及SQL Server是否配置为允许远程连接。“

在数据库资源管理器中,我看到我的Database1.sdf在其图标上有一个X(小黄色圆柱体)并检查其状态是否已关闭,所以我尝试通过右键单击它打开它,然后修改连接,放置Database1数据库中的.sdf路径,输入我的密码并按下确定。那时我看到我的Database1.sdf状态变为“Open”但是当我运行我的应用程序时,状态再次变为“已关闭”(顺便说一下,我通过右键单击解决方案资源管理器中的Database1.sdf来看到这种状态)。

下面的这段文字与我上面的代码几乎没有关系,我只是希望你对我想要创建的软件的最佳方法有什么看法,所以如果你只想帮助我修改我的代码,我非常感兴趣,你可以停止阅读下面的段落,但如果你花时间考虑阅读它,这对我来说意味着很多。致谢

视觉基本形式和数据库的连接是我真正想要做的第一步,我的主要目标是两台PC之间的文件存储系统,一旦我找到这两台PC,我就会增加。

为了达到这个目标,我试图划分每个问题,以便我可以相应地解决它们并最终完成整个软件。

  1. 在2台PC之间建立连接(我已经通过将PC2的dns服务器设置为PC1的IP地址来完成)。
  2. 将可视基本表单(在我的情况下是注册表单)与用于存储用户帐户的数据库相连接。
  3. 每次注册都会为已注册的特定用户创建一个文件夹。创建的文件夹将是他们文件的存储(这个想法实际上是模糊的,因为我不知道我将如何做到这一点,非常重要的部分只是数据库的注册用户只能访问他们自己的文件夹(对不起,我不是在喊,只是注意到这一点,因为我觉得这是最困难的部分)
  4. 在文件夹上实施磁盘配额以限制大小。
  5. 为PC2创建一个登录系统以连接到PC1的数据库(如果信息不正确,数据库应验证这一点并给出错误。)
  6. 为PC2创建一个保存/加载按钮(我希望PC2使用My.Computer.FileSystem.CopyDirectory命令将其myDocuments文件夹保存在PC1的存储文件夹中。然后加载将复制PC1的文件夹并将其加载到PC2的MyDocuments文件夹。
  7. 最后,最大的问题是,所有这些都可能与Visual Basic有关吗?我使用漫游用户配置文件尝试使用Windows Active Directory,但我真的想开发自己的软件。

    编辑: @Jimmy Smith

    感谢您的回复,我决定创建另一个名为CCS的数据库,我的form2新代码是:

    Dim conn As New System.Data.SqlServerCe.SqlCeConnection()
        Dim cmd As New System.Data.SqlClient.SqlCommand
        conn.ConnectionString = _
        "Persist Security Info = False; Data Source = 'C:\Users\Bounty Hounds\Documents\Visual Studio 2010\Projects\WindowsApplication2\WindowsApplication2\CCS.sdf';" & _
        "Password = joshua8; File Mode = 'shared read'; "
        conn.Open()
        cmd.CommandType = System.Data.CommandType.Text
        cmd.CommandText = "INSERT Username (user) Password (pass) Year/Section (yns) SecretQuestion (sq) SecretAnswer (sa)"
    

    但是,它会生成一个新错误: 存在文件共享违规。不同的进程可能正在使用该文件。 [C:\ Users \ Bounty Hounds \ Documents \ Visual Studio 2010 \ Projects \ WindowsApplication2 \ WindowsApplication2 \ CCS.sdf]

1 个答案:

答案 0 :(得分:1)

您无法直接连接到SDF文件而无需使用Compact Edition库。不幸的是,它没有默认安装,因为微软似乎正在逐步淘汰它。

使用System.Data.SqlserverCe.SqlCeConnection代替System.Data.SqlClient.SqlConnection

http://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1 http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection(v=vs.100).aspx