|
我有一个C#应用程序正在使用带MySQL的ON DUPLICATE KEY UPDATE在准备语句时遇到问题。
9 l, k. K7 C, r; G) S! F; _$ A, H, K9 t当我在之前的断点检查连接变量时mypcmd.ExecuteNonQuery();,mypcmd.IsPrepared是false。查询不执行任何操作(应更新,因为主键已经存在),无异常。mypcmd.Parameters.count= 25如果我深入数据视图,应该是正确的,值是正确的。
) E. w# ~7 U( v查询通过时,键0将更新为所有参数名称(iefname:?fname,Middlename:?middlename等等,而不是准确值)5 H9 [" t' @/ b' B% o) y
MySQL5.服务器版本.0.51a-24 lenny5' w8 q3 w% E( D' [
MySQL C#程序集版本(mysql.data.dll)6.3.6.0
0 A' s U! |# d) V b0 Z/ ]! v( k应用是WPF .NET 4.0代码如下:
7 P* s, x# f s: ^- w( zconst string sqlIpatients = @"INSERT INTO `tblpatients` ( `number`,`fname`,`middlename`,`surname`, `title`,`contactno`,`mobileno`,`sex`,`dob`, `housename`,`houseno`,`address1`,`address2`, `address3`,`address4`,`postcode`,`notes`,`home`, `sp1`,`sp2`,`sp3`,`sp4`,`sp5`,`sp6`,`email`) VALUES( '?number','?fname','?middlename','?surname title','?contactno','?mobileno','?sex','?dob housename','?houseno','?address1','?address2 address3','?address4','?postcode','?notes','?home sp1','?sp2','?sp3','?sp4','?sp5','?sp6','?email ON DUPLICATE KEY UPDATE `number`=VALUES(`number`),`fname`=VALUES(`fname`),`middlename`=VALUES(`middlename`),`surname`=VALUES(`surname`), `title`=VALUES(`title`),`contactno`=VALUES(`contactno`),`mobileno`=VALUES(`mobileno`),`sex`=VALUES(`sex`),`dob`=VALUES(`dob`), `housename`=VALUES(`housename`),`houseno`=VALUES(`houseno`),`address1`=VALUES(`address1`),`address2`=VALUES(`address2`), `address3`=VALUES(`address3`),`address4`=VALUES(`address4`),`postcode`=VALUES(`postcode`),`notes`=VALUES(`notes`),`home`=VALUES(`home`), `sp1`=VALUES(`sp1`),`sp2`=VALUES(`sp2`),`sp3`=VALUES(`sp3`),`sp4`=VALUES(`sp4`),`sp5`=VALUES(`sp5`),`sp6`=VALUES(`sp6`),`email`=VALUES(`email`)";…6 n6 s' N% {2 R, L+ P" y; n) Q
MySqlCommand mypcmd = new MySqlCommand(sqlIpatients,myConn二、 mypcmd.Prepare(); mypcmd.Parameters.Add("?number",MySqlDbType.UInt3二、 mypcmd.Parameters.Add("?fname",MySqlDbType.VarChar,二十); mypcmd.Parameters.Add("?middlename",MySqlDbType.VarChar,二十); mypcmd.Parameters.Add("?surname",MySqlDbType.VarChar,40); mypcmd.Parameters.Add("?title",MySqlDbType.VarChar,6); mypcmd.Parameters.Add("?contactno",MySqlDbType.VarChar,40); mypcmd.Parameters.Add("?mobileno",MySqlDbType.VarChar,40); mypcmd.Parameters.Add("?sex",MySqlDbType.VarChar,一、 mypcmd.Parameters.Add("?dob",MySqlDbType.Date); mypcmd.Parameters.Add("?housename",MySqlDbType.VarChar,二十); mypcmd.Parameters.Add("?houseno",MySqlDbType.VarChar,二十); mypcmd.Parameters.Add("?address1",MySqlDbType.TinyText); mypcmd.Parameters.Add("?address2",MySqlDbType.TinyText); mypcmd.Parameters.Add("?address3",MySqlDbType.TinyText); mypcmd.Parameters.Add("?address4",MySqlDbType.TinyText); mypcmd.Parameters.Add("?postcode",MySqlDbType.TinyText); mypcmd.Parameters.Add("?notes",MySqlDbType.Text); mypcmd.Parameters.Add("?home",MySqlDbType.UInt16); mypcmd.Parameters.Add("?sp1",MySqlDbType.VarChar,一、 mypcmd.Parameters.Add("?sp2",MySqlDbType.VarChar,一、 mypcmd.Parameters.Add("?sp3",MySqlDbType.VarChar,一、 mypcmd.Parameters.Add("?sp4",MySqlDbType.VarChar,一、 mypcmd.Parameters.Add("?sp5",MySqlDbType.VarChar,一、 mypcmd.Parameters.Add("?sp6",MySqlDbType.VarChar,一、 mypcmd.Parameters.Add("?email",MySqlDbType.Text); var prodr = procmd.ExecuteReader(); while (prodr.Read()foreach (MySqlParameter p in mypcmd.Parameters) p.Value = prodr[p.ParameterName.Replace("?","")].ToString().Trim(); } } mypcmd.ExecuteNonQuery();我想念什么?请帮忙!! v5 V+ S0 X. u( u
& d N. t7 ]8 E. m5 U" K 解决方案: |
|