2008年3月29日

具名參回方式,存取資料庫

連接SQL.
connStr = "Server=(local); database=票據; uid=sa; pwd=;"
conn = New SqlConnection(connStr)
conn.Open()
updateCmd = "update 廠商 Set C_Co=@公司 ,C_LTD=@簡稱 Where C_No=@編號"
cmd = New SqlCommand(updateCmd, conn)
cmd.Parameters.Add(New SqlParameter("@編號", SqlDbType.Char))
cmd.Parameters.Add(New SqlParameter("@公司", SqlDbType.Char))
cmd.Parameters.Add(New SqlParameter("@簡稱", SqlDbType.Char))
cmd.Parameters("@編號").Value = txtC_No.Text
cmd.Parameters("@公司").Value = txtC_Co.Text
cmd.Parameters("@簡稱").Value = txtC_LTD.Text
cmd.ExecuteNonQuery()

連接Access.
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=票據.mdb"
conn = New OleDbConnection(connStr)
conn.Open()
updateCmd = "update 廠商 Set C_Co=@公司 ,C_LTD=@簡稱 Where C_No=@編號"
cmd = New OleDbCommand(updateCmd, conn)
cmd.Parameters.Add(New OleDbParameter("@編號", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@公司", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@簡稱", OleDbType.Char))
cmd.Parameters("@編號").Value = txtC_No.Text
cmd.Parameters("@公司").Value = txtC_Co.Text
cmd.Parameters("@簡稱").Value = txtC_LTD.Text
cmd.ExecuteNonQuery()

結果 :
SQL 版,完全正常
Access版則會存成 ==> 公司(C_Co)會存到編號(C_No),簡稱(C_LTD)會存到公司(C_Co)的資料 !?
請教高手,何處錯了,謝謝指導~


以上問題已ok了 ~
在SQL語法中的順序是=>公司、簡稱、編號,所以我將具名參數的順序也修改成=>公司、簡稱、編號即ok了,如下:
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=票據.mdb"
conn = New OleDbConnection(connStr)
conn.Open()
updateCmd = "update 廠商 Set C_Co=@公司 ,C_LTD=@簡稱
Where C_No=@編號"
cmd = New OleDbCommand(updateCmd, conn)
cmd.Parameters.Add(New OleDbParameter("@公司",
OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@簡稱",
OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@編號",
OleDbType.Char))
cmd.Parameters("@公司").Value = txtC_Co.Text
cmd.Parameters("@簡稱").Value = txtC_LTD.Text
cmd.Parameters("@編號").Value = txtC_No.Text
cmd.ExecuteNonQuery()

#問題是在SQL server 2000怎沒順序問題 ? 好奇怪 @#$%