注册 登录
编程论坛 VB.NET论坛

求助,SQLiteDataAdapter更新到数据库中不成功的问题

yangmz 发布于 2021-05-19 11:57, 1725 次点击
编程环境:vb2010,System.Data.SQLite 1.0.113.0,win7 64  
本论坛上的也有人问了这个问题,我按照搜索的内容进行了修改,也还是不行

下面一段代码是连接一个数据库,然后定位到指定行,在某字段保存一个图片文件,然后计划更新到数据库中
    Imports System.Data.SQLite   
     Public salda_xmname As New SQLite.SQLiteDataAdapter
    Public ds As New DataSet()      '数据集  
    Public rowFind As DataRow      'treeview根据键值查找到项目数据库对象        

        Dim constr As String = "data source= D:\vbtest\mytest\data\qyglname.db"

        Dim SQLconn As New Data.SQLite.SQLiteConnection '定义数据库链接
        Dim sqlcmd As New SQLite.SQLiteCommand '定义查询操作
        Try
            SQLconn.ConnectionString = constr '链接数据库
            SQLconn.Open()
            sqlcmd.Connection = SQLconn
             = "select * from xmname"                                     ‘选择表名为xmname,填充到数据适配器中
 
            salda_xmname = New SQLite.SQLiteDataAdapter(, SQLconn)

        Finally
            If Not (SQLconn Is Nothing) Then SQLconn.Dispose()
            SQLconn = Nothing
            If Not (salda_xmname Is Nothing) Then salda_xmname.Dispose()
            salda_xmname = Nothing
        End Try
        salda_xmname.Fill(ds, "xmname")                                                                '从数据适配器填中充数据到数据集
        ds.Tables("xmname").PrimaryKey = New DataColumn() {ds.Tables("xmname").Columns("treedate")}   ‘指定主健
        rowFind = ds.Tables("xmname").Rows.Find(NodeNameKey)                                           ’查找变量为NodeNameKey,并定位到行

    ‘下段代码保存图片1.jpg 到字段 resut 中,
       Dim myfilestream As New ("D:\vbtest\mytest\GRAPHICS\1.jpg", IO.FileMode.Open)
        Dim data() As Byte
        ReDim data(myfilestream.Length - 1)
        myfilestream.Read(data, 0, myfilestream.Length)
        myfilestream.Close()
   
        rowFind("resut") = data           '数据流赋值到字段中,

       ’下段代码计划从数据适配器中把所作修改更新到数据库中。但未成功,这是怎么回事?      
        Dim cmdBuilder As New SQLiteCommandBuilder(salda_xmname)
   
          salda_xmname.Update(ds, "xmname")
         改成      
        salda_xmname.Update(ds.Tables("xmname").GetChanges())
        ds.Tables("xmname").AcceptChanges()
       也不行
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2021-5-19 15:00编辑过]

2 回复
#2
xyxcc1772021-05-20 14:44
这是因为sqlite数据库没有主键,使用update命令进行修改时必须要有主键,就使用insert into命令插入记录
#3
yangmz2021-05-21 08:39
谢谢,设置主健后,果然成功。
1