2011-02-24 58 views
1

以下代码是假设创建一个数据库和一个表,其中分配了值“詹姆斯”无法在数据库中创建一个表&插入值

Imports System.Data.SQLite 
Public Class Form1 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     SQLiteConnection.CreateFile("c:\mydatabasefile.db3") 
     Dim sqlConnection As New SQLite.SQLiteConnection() 
     Dim sqlCommand As New SQLiteCommand 

     sqlConnection.ConnectionString = "Data Source=c:\mydatabasefile.db3" 
     sqlConnection.Open() 
     sqlCommand.CommandText = "CREATE TABLE MyTable(EmpID INTEGER PRIMARY KEY ASC, FirstName VARCHAR(25));" 
     sqlCommand.CommandText = "INSERT INTO MyTable(FirstName) VALUES('James');" 
     sqlConnection.Close() 
    End Sub 
End Class 

但对于一些列“姓”原因该应用程序只创建一个大小为0字节的数据库。为什么它不起作用。我正在使用SQLite ADO.NET Provider。 ,VS 2010的WinForms

回答

2

你永远执行SQL命令

Public Class Form1 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     SQLiteConnection.CreateFile("c:\mydatabasefile.db3") 
     Dim sqlConnection As New SQLite.SQLiteConnection() 
     Dim sqlCommand As New SQLiteCommand("", sqlConnection) 

     sqlConnection.ConnectionString = "Data Source=c:\mydatabasefile.db3" 
     sqlConnection.Open() 
     sqlCommand.CommandText = "CREATE TABLE MyTable(EmpID INTEGER PRIMARY KEY ASC, FirstName VARCHAR(25));" 
     sqlCommand.ExecuteNonQuery() 
     sqlCommand.CommandText = "INSERT INTO MyTable(FirstName) VALUES('James');" 
     sqlCommand.ExecuteNonQuery() 
     sqlConnection.Close() 
    End Sub 


End Class 

您还需要设置的命令连接,你也可以说

sqlCommand.Connection = sqlConnection 这应该可以解决您做

+0

哦,你能告诉我如何执行它,我对这件事很陌生,试图在过去18小时内执行插入更新和删除功能 – 2011-02-24 17:58:15

+0

看看我的编辑,我得到了从http://www.devart.com/dotconnect/sqlite/docs/Devart.Data.SQLite~Devart.Data.SQLite.SQLiteCommand.html信息 – msarchet 2011-02-24 17:58:57

+0

我收到错误“没有与此命令相关的连接”。 VS凸显一号'sqlCommand.ExecuteNonQuery()' – 2011-02-24 18:01:17

1

您从不执行sqlCommands。您应该使用.ExecuteNonQuery()来获取数据库中的内容,否则不会执行任何操作。

+0

所以,我必须把它的每个单个查询? – 2011-02-24 18:02:19

+0

是的。你确实希望每个查询都被执行,不是吗? – Martijn 2011-02-24 18:07:40

1

也让命令知道什么连接使用。 sqlCommand.Connection = sqlConnection