1 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
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對(duì)象用于創(chuàng)建、使用和處理
而不是一次又一次的重復(fù)使用。但是,你 能,會(huì),可以使用全局連接字符串,這樣就不會(huì)到處都有相同的連接字符串。 許多 應(yīng)該處理dbObjects。.Using
塊將關(guān)閉并釋放連接和命令對(duì)象。一般情況下,如果某物 Dispose
方法,將它們包裝在 Using
封鎖。上面展示了如何“堆?!?個(gè)對(duì)象( OleDbConnection
和 OleDbCommand
)合而為一 Using
語(yǔ)句減少縮進(jìn)。 使用 Add
方法而不是 AddWithValue
..這允許您為每個(gè)參數(shù)指定datataype。沒(méi)有它,DB提供程序必須猜測(cè)會(huì)導(dǎo)致 Datatype mismatch
或者在某些情況下甚至損壞數(shù)據(jù)庫(kù)。 這個(gè) WHERE
子句只是另一個(gè)參數(shù)。 ..通常,人們會(huì)為SQL的第一部分使用參數(shù),但對(duì)于WHERE子句則使用級(jí)聯(lián)。 上面的內(nèi)容還使用XML文本來(lái)構(gòu)造SQL。這對(duì)于長(zhǎng)而復(fù)雜的SQL非常方便,因?yàn)槟梢愿鶕?jù)自己的喜好格式化和縮進(jìn)它。您還可以使用多行使其可讀性: Dim sql = "UPDATE tblPatientsRecord SET [Names] = @p1, " _ & "Licensenumber = @p2, " _ & "Address = @p3, "
如果你用 SQL保留字 或表名或列名中的空格,則必須轉(zhuǎn)義這些名稱(chēng)。 使用 [Square Brackets]
如圖所示。最好不要在名字中使用任何一種。 User
,Password
Names
和 Values
是用作列或表名的常用單詞,這些名稱(chēng)會(huì)導(dǎo)致SQL語(yǔ)法錯(cuò)誤。 蜱不是通用的sql字段分隔符,
它們實(shí)際上表明傳遞的值是字符串/文本: & "Age ='" & txtAge.Text & "'"
..如果DB被設(shè)置為存儲(chǔ) Age
作為一個(gè)數(shù)字,您的SQL將它作為文本/字符串傳遞,這會(huì)導(dǎo)致 data type mismatch
..同樣的道理也適用于 PatientID
和 Birthday
如果是日期字段。 SQL語(yǔ)句串連字符串的一個(gè)常見(jiàn)問(wèn)題是太多或太少的滴答聲( '
)在結(jié)果中。這在SQL參數(shù)中是不可能發(fā)生的。
MySql
, SQLite
SQLServer
@FirstName
@p2
Add
/AddWithValue
) 以同樣的順序
- 1 回答
- 0 關(guān)注
- 437 瀏覽
添加回答
舉報(bào)