我正在使用 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) _
此代码将在您的数据库中执行“点赞”操作,并且 NText
和 Text
字段不允许执行此类操作。
尝试将字段类型从 Text
更改为 Varchar(500)
(如果您认为 500 还不够,则可以更大)
或
如果您打算搜索已知值,请尝试更改搜索位置:
Where memrec.Account = accnt
关于vb.net - 如何使用 linq to sql 的文本框编辑/更新数据库中的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565161/