Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用vb.net将MS Access行插入数据库_Sql_Database_Vb.net_Oledbcommand - Fatal编程技术网

Sql 使用vb.net将MS Access行插入数据库

Sql 使用vb.net将MS Access行插入数据库,sql,database,vb.net,oledbcommand,Sql,Database,Vb.net,Oledbcommand,因此,我试图将字段添加到数据库中。它是.mdb数据库,microsoft access 该表的名称为Contacts Dim con As New OleDb.OleDbConnection Dim dbProvider As String Dim dbSource As String Dim ds As New DataSet Dim da As OleDb.OleDbDataAdapter Dim sql As String dbProvid

因此,我试图将字段添加到数据库中。它是.mdb数据库,microsoft access

该表的名称为Contacts

Dim con As New OleDb.OleDbConnection
    Dim dbProvider As String
    Dim dbSource As String
    Dim ds As New DataSet
    Dim da As OleDb.OleDbDataAdapter
    Dim sql As String

    dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
    dbSource = "Data Source= C:\Users\Owner\Desktop\Contacts.mdb"

    con.ConnectionString = dbProvider & dbSource

    con.Open()

    sql = "INSERT INTO Contacts (FName, LName, Age, Address Line 1, Address Line 2, City, State, Zip, Home Phone, Work Phone, Email, Sex) VALUES (a, b, c,d,e,f,g,h,i,j,k)"
    da = New OleDb.OleDbDataAdapter(Sql, con)
    da.Fill(ds, "Contacts")
我的错误是INSERT INTO语句中的语法错误。这毫无意义。我做错了什么

编辑* 我解决了我原来的问题,按照建议在证书字段周围添加[],谢谢。现在我得到

没有为一个或多个必需参数提供值


数据库有一个自动递增的主ID字段,这会改变什么吗?

将列名放在方括号之间[]

例如
[地址行1]


Cheers

由单个单词组成的表和字段名称可以直接写入,例如
FName

地址行1
howover这样的名称需要在
[]
之间进行包装,以使synthax一致

INSERT INTO Contacts (FName, LName, Age, [Address Line 1], [Address Line 2], City, State, Zip, [Home Phone], [Work Phone], Email, Sex) VALUES (...

这同样适用于使用保留字命名的对象。

正如其他答案已经解释的那样,您需要在包含空格的列名周围使用方括号,但也需要为字段添加值,否则无法执行该命令

我将尝试展示一个完整的示例

Dim dbProvider  = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
Dim dbSource = "Data Source= C:\Users\Owner\Desktop\Contacts.mdb"

Dim sql = "INSERT INTO Contacts (FName, LName, Age, " & _ 
          "[Address Line 1], [Address Line 2], City, State, Zip, " & _ 
          "[Home Phone], [Work Phone], Email, Sex) " & _
          "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"

Using con = New OleDb.OleDbConnection(dbProvider & dbSource)
Using cmd = new OleDb.OleDbCommand(sql, con)
    con.Open()
    cmd.Parameters.AddWithValue("@p1", "Value For FName")
    cmd.Parameters.AddWithValue("@p2", "Value For LName")
    cmd.Parameters.AddWithValue("@p3", Convert.ToInt32("Value For Age"))
    .... and so on for the other parameters .....
    cmd.ExecuteNonQuery()
End Using
End Using
在本例中,我为参数(?)插入了12个占位符,然后添加了12个必需参数中的前3个。请注意,对于OleDb,参数集合仍然需要添加具有名称(@pX)的参数,但在执行查询时,参数值将按照占位符的相同顺序拾取

我还使用了Using语句来关闭和处理一次性对象,如连接和命令


最后,插入查询通常使用来自OleDbCommand的ExecuteOnQuery执行,如果我正确理解了您的需求,则在未执行SELECT查询时,无需使用OleDbAdapter和call Fill加载数据集:

翻译自:Se entendi o que estáprecisandoéisto aqui,veja o código:


其中定义了
a、b、c、d、e、f、g、h、i、j、k
?仅是我尝试插入测试的值,它们最终将是我想要输入的任何值,因此我这样做了,并且新的错误没有为一个或多个必需参数提供值。这里没有连接到某些东西,变量
sql
到底在哪里使用?他用cmd=new-OleDb搞乱了这个例子。OleDbCommand(commandText,con)应该是sql而不是commandText,我用变量sql来保存我的sql命令
comando = New OleDbCommand("INSERT INTO TabClientes(NomeCliente,Telefone,CEP,Rua,Bairro,Cidade,Estado)" & _
                                 "Values (@nome,@telefone,@cep,@rua,@bairro,@cidade,@estado)")
        comando.Connection = conn
        comando.Parameters.AddWithValue("@nome", txtnome.Text)
        comando.Parameters.AddWithValue("@telefone", mkbtelefone.Text)
        comando.Parameters.AddWithValue("@cep", mkbcep.Text)
        comando.Parameters.AddWithValue("@rua", txtrua.Text)
        comando.Parameters.AddWithValue("@bairro", txtbairro.Text)
        comando.Parameters.AddWithValue("@cidade", txtcidade.Text)
        comando.Parameters.AddWithValue("@estado", txtestado.Text)
        ' comando.ExecuteNonQuery()
        If comando.ExecuteNonQuery Then
            MessageBox.Show("Registro salvo com sucesso ...")
        Else
            MessageBox.Show("Erro ao tentar gravar o registro ...")

        End If
        conn.Close()