1 回答
TA贡献1982条经验 获得超2个赞
Dim sql = <sql> UPDATE tblPatientsRecord SET [Names] = @p1, Licensenumber = @p2, Address = @p3, Fullname = @p4, Birthday = @p5, [Age] = @p6, Country = @p7 WHERE PatientID = @p8 </sql>.Value Using conn = New OleDbConnection(myConnStr), cmd As New OleDbCommand(sql, conn) conn.Open() cmd.Parameters.Add("@p1", OleDbType.VarChar).Value = txtNames.Text cmd.Parameters.Add("@p2", OleDbType.VarChar).Value = txtLicensenumber.Text ' ...etc cmd.Parameters.Add("@p6", OleDbType.Integer).Value = intVar cmd.Parameters.Add("@p7", OleDbType.VarChar).Value = strVar 'the last one is the WHERE cmd.Parameters.Add("@p8", OleDbType.VarChar).Value = Convert.ToInt32(lblPatientID.Text) cmd.ExecuteNonQuery() '... etcEnd Using
DBConnection对象用于创建、使用和处理
而不是一次又一次的重复使用。但是,你 能,会,可以使用全局连接字符串,这样就不会到处都有相同的连接字符串。 许多 应该处理dbObjects。.Using
块将关闭并释放连接和命令对象。一般情况下,如果某物 Dispose
方法,将它们包装在 Using
封锁。上面展示了如何“堆栈”2个对象( OleDbConnection
和 OleDbCommand
)合而为一 Using
语句减少缩进。 使用 Add
方法而不是 AddWithValue
..这允许您为每个参数指定datataype。没有它,DB提供程序必须猜测会导致 Datatype mismatch
或者在某些情况下甚至损坏数据库。 这个 WHERE
子句只是另一个参数。 ..通常,人们会为SQL的第一部分使用参数,但对于WHERE子句则使用级联。 上面的内容还使用XML文本来构造SQL。这对于长而复杂的SQL非常方便,因为您可以根据自己的喜好格式化和缩进它。您还可以使用多行使其可读性: Dim sql = "UPDATE tblPatientsRecord SET [Names] = @p1, " _ & "Licensenumber = @p2, " _ & "Address = @p3, "
如果你用 SQL保留字 或表名或列名中的空格,则必须转义这些名称。 使用 [Square Brackets]
如图所示。最好不要在名字中使用任何一种。 User
,Password
Names
和 Values
是用作列或表名的常用单词,这些名称会导致SQL语法错误。 蜱不是通用的sql字段分隔符,
它们实际上表明传递的值是字符串/文本: & "Age ='" & txtAge.Text & "'"
..如果DB被设置为存储 Age
作为一个数字,您的SQL将它作为文本/字符串传递,这会导致 data type mismatch
..同样的道理也适用于 PatientID
和 Birthday
如果是日期字段。 SQL语句串连字符串的一个常见问题是太多或太少的滴答声( '
)在结果中。这在SQL参数中是不可能发生的。
MySql
, SQLite
SQLServer
@FirstName
@p2
Add
/AddWithValue
) 以同样的顺序
- 1 回答
- 0 关注
- 417 浏览
添加回答
举报