vb.net - 如何使用 linq to sql 的文本框编辑/更新数据库中的记录?

标签 vb.net linq-to-sql

我正在使用 linq to sql 的 Visual Basic 2008 Express Edition 进行数据库操作,例如编辑记录。我没有使用任何 SQL Server,但我只是使用 Visual Basic 2008 Express 中的内置 SQL Server。我尝试修改代码,语法没有错误,但在运行时出现错误,并弹出一个窗口消息,说明其错误消息。我想要的是将从数据库检索到的记录编辑到文本框中,当您单击按钮时,文本框中的新值应替换之前的值。 Account 字段是 memrec.dbml 中 Table1 中的字段,我在其主键中设置主键为 true,其余字段为 false。 下面的代码在运行程序时仍然发现错误,并弹出一个窗口,其中显示:

NotSupportedException 未处理 - Sql 服务器不处理 NText、Text、Xml 或 Image 数据类型的比较。

它突出显示该行的黄色背景:

db.SubmitChanges()

这些是我在 memrec.dbml 属性窗口中 Table1 上每个字段的属性上看到的内容:

Access - Public
Type - String(System.String)
Server Data Type - Text
Auto-Generated Value - False
Auto-Sync - Never
Delay Loaded - False
Inheritance Modifier - (none)
Nullable - True
Read Only - False
Time Stamp - False
Update Check - Never
Primary Key - False ' Except for the Account field.

您认为可能出现的错误是什么?

是因为它的设置吗?

这是我的代码:


Private Sub Button5_Click(------------------) Handles Button5.Click 
    If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or _
            TextBox4.Text   = "" Then 
        MsgBox("Please Fill It Up Completely", MsgBoxStyle.Exclamation) 
        Exit Sub 
    Else 

        Dim accnt As String 
            accnt = TextBox1.Text 
        Dim db As New memrecDataContext() 

        Dim editrecord = _ 
            From memrec In db.Table1s _ 
            Where memrec.Account.Contains(accnt) _ 
            Select memrec 

        For Each memrec In editrecord 
            If memrec.Account = accnt Then 

                memrec.Account = TextBox1.Text 
                memrec.Name = TextBox2.Text  
                memrec.Address = TextBox3.Text 
                memrec.Gender = TextBox4.Text 
                db.SubmitChanges() 
                Exit Sub 
            End If 
        Exit For 

        Next 

        MsgBox("No Records Match", MsgBoxStyle.Information) 
    End If 
End Sub 

感谢您花时间与我一起解决这个问题......

最佳答案

Where memrec.Account.Contains(accnt) _

此代码将在您的数据库中执行“点赞”操作,并且 NTextText 字段不允许执行此类操作。

尝试将字段类型从 Text 更改为 Varchar(500)(如果您认为 500 还不够,则可以更大)

如果您打算搜索已知值,请尝试更改搜索位置:

Where memrec.Account = accnt

关于vb.net - 如何使用 linq to sql 的文本框编辑/更新数据库中的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565161/

相关文章:

c# - 向 dbml 添加了一个表,但它没有显示在代码中

asp.net - 如何在VB.NET中找出字符串的第一个字符是否是数字?

vb.net - 如何更改类列表中的值?

c# - 什么是NullReferenceException,如何解决?

c# - OData 查询中的 LIKE

sql-server-2008 - LINQ2SQL : If I make changes to DB, 如何在 DBML 中镜像它们?

javascript - Asp.NET 未获取 javascript 设置的自定义属性的更新值

mysql - 连接Mysql数据库和visual basic

sql-server - 什么会导致 linq to sql 认为参数可以为空?

c# - Linq 查询返回 true 或 false