1 回答

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