新しいデータベースを作成してデータを挿入するたびに、WinFormsアプリケーションでエラーが発生し続けます。
これが私がデータベースを作成する方法です
Public Function CreateDatabase() As String
Dim ds As String = "Data Source=" + (My.Computer.FileSystem.SpecialDirectories.MyDocuments) + "\" + (Application.ProductName) + "\" + (DBName) + ".wv" + ";Persist Security Info=True;"
Dim Conn As New SqlCeConnection(ds)
Dim Cmd1 As New SqlCeCommand()
Dim Cmd2 As New SqlCeCommand()
Dim SqlCeDB As New SqlCeEngine(ds)
Dim Msg As String
Try
If Not System.IO.File.Exists(DBName) Then
Msg = "Database successfully created in " & Application.StartupPath
SqlCeDB.CreateDatabase()
Cmd1.Connection = Conn
Conn.Open()
'Create acPassword Table
Cmd1.CommandText = "CREATE TABLE [wvAccount](" & _
"[acName] [nvarchar](100) NOT NULL, " & _
"[acPassword] [nvarchar](100) NOT NULL," & _
"[acKeyFile] [nvarchar](64) NULL, " & _
"[acLastLogin] [nvarchar](100) NULL, " & _
"[acLastModified] [nvarchar](100) NULL)"
Cmd1.ExecuteNonQuery()
'Create pmPassword Table
Cmd2.Connection = Conn
Cmd2.CommandText = "CREATE TABLE [wvPassword](" & _
"[pmID] [int] CONSTRAINT pmID PRIMARY KEY NOT NULL, " & _
"[pmCat] [nvarchar](100) NOT NULL, " & _
"[pmTitle] [nvarchar](100) NOT NULL," & _
"[pmUsername] [nvarchar](100) NOT NULL," & _
"[pmSiteURL] [nvarchar](100) NULL," & _
"[pmNotes] [nvarchar](300) NULL)"
Cmd2.ExecuteNonQuery()
Else
Msg = "There is already a Database with that name."
End If
Catch ex As Exception
Msg = ex.Message
End Try
Return Msg
End Function
これが、データベースを作成してテーブルを入力した直後にデータを挿入する方法です。
Private Sub ADD_PA()
Dim StrSQL_vault As String = "INSERT INTO [wvAccount] ([acName], [acPassword], [acKeyFile], [acLastLogin], [acLastModified]) VALUES (@acName, @acPassword, @acKeyFile, @acLastLogin, @acLastModified)"
classlibrary_vault = New ConnectionLibrary_Vault
classlibrary_vault.openConnection_vault(strconnection_vault)
If Not classlibrary_vault.isConnectionOpen_vault() Then
Exit Sub
End If
classlibrary_vault.initializeCommand_vault(StrSQL_vault)
classlibrary_vault.addParameter_vault("@acName", SqlDbType.NVarChar, txtName.TextLength, txtName.Text)
classlibrary_vault.addParameter_vault("@acPassword", SqlDbType.NVarChar, txtEncryptedCode.TextLength, txtEncryptedCode.Text)
classlibrary_vault.addParameter_vault("@acKeyFile", SqlDbType.NVarChar, txtKeyFile.TextLength, txtKeyFile.Text)
classlibrary_vault.addParameter_vault("@acLastLogin", SqlDbType.NVarChar, txtLastLogin.TextLength, txtLastLogin.Text)
classlibrary_vault.addParameter_vault("@acLastModified", SqlDbType.NVarChar, txtLastModified.TextLength, txtLastModified.Text)
Try
objcommand_vault.ExecuteNonQuery()
txtAccountName.Text = txtName.Text
'Set controls
_Main.NotifyIcon.Visible = True
_Main.NotifyIcon.ShowBalloonTip(1, Application.ProductName, VAULT_CREATED, ToolTipIcon.Info)
Me.ParentForm.Controls.Remove(Me)
controlManagePasswords()
Catch ex As Exception
DevComponents.DotNetBar.MessageBoxEx.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
最初はテーブルに主キーがあったときはwvAccount
問題はありませんでしたが、今では取得し続けています
データベースをnull、空の文字列、または空白のみの文字列にすることはできません。
データベースの作成に問題はありません。気になるのは、にデータを挿入しようとするときだけですwvAccount
。ところで、私はSQL ServerCE4.0とVB.Netを使用しています
この.wv
拡張機能を使用すると、以前にデータベースの読み取りと書き込みを行うことができるため、おそらく問題はありません。