我面临更新我的SQL表的问题。我正在使用positalizecss,因此我必须使用
<div class="input-field col l6 s12 m6">
<input type="date" id="DOB" class="datepicker"/>
<label for="DOBLBL">DATE OF BIRTH</label>
</div>
jQuery:
$('.datepicker').pickadate({
selectMonths: true, // Creates a dropdown to control month
selectYears: 15, // Creates a dropdown of 15 years to control year
format: 'mm/dd/yyyy'
});
c#
string dob = String.Format("{0}", Request.Form["DOB"]);
string jd = String.Format("{0}", Request.Form["JD"]);
String userName = Convert.ToString(Session["username"]);
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
MySqlConnection con = new MySqlConnection(constr);
MySqlCommand com = new MySqlCommand("userDetails", con);
com.CommandType = CommandType.StoredProcedure;
MySqlParameter p1 = new MySqlParameter("nickName", nickNameTB.Text);
MySqlParameter p2 = new MySqlParameter("dob", dob);
MySqlParameter p3 = new MySqlParameter("joinDt", jd);
MySqlParameter p4 = new MySqlParameter("memType", memTtype);
MySqlParameter p5 = new MySqlParameter("usrname", userName);
com.Parameters.Add(p1);
com.Parameters.Add(p2);
com.Parameters.Add(p3);
com.Parameters.Add(p4);
com.Parameters.Add(p5);
con.Open();
com.ExecuteNonQuery();
我创建的例程
CREATE DEFINER=`root`@`localhost` PROCEDURE `userDetails`(IN `nickName` VARCHAR(15), IN `dob` DATE, IN `joinDt` DATE, IN `memType` INT(3), IN `usrname` VARCHAR(15))
NO SQL
update ozi_members
SET memberNickName = nickName,
memberDob = dob,
memberJoinDate = joinDt,
memberType = memType
WHERE memberUsername = usrname
我尝试了过程,它可以正常工作。因此,我认为问题是我从datePicker中采取的日期格式。请帮助。
如果您的字段是类型日期,则应通过类型日期的参数。
如果您通过字符串,则需要将其转换为字段所需的日期。日期不是字符串,这里总是有转换。这种转换是否可以起作用,但是为什么要让这种转换呢?只需创建指定类型的参数并传递正确类型的参数值
DateTime dob = Convert.ToDateTime(Request.Form["DOB"]);
DateTime jd = Convert.ToDateTime(Request.Form["JD"]);
....
using(MySqlConnection con = new MySqlConnection(constr))
using(MySqlCommand com = new MySqlCommand("userDetails", con))
{
com.CommandType = CommandType.StoredProcedure;
MySqlParameter p1 = new MySqlParameter("nickName", MySqlDbType.VarChar).Value = nickNameTB.Text;
MySqlParameter p2 = new MySqlParameter("dob", MySqlDbType.Date).Value = dob;
MySqlParameter p3 = new MySqlParameter("joinDt", MySqlDbType.Date).Value = jd;
....
con.Open();
com.ExecuteNonQuery();
}
请注意,A连接和命令应包含在使用语句中以正确处理这些对象并避免资源泄漏。
(初始convert.todatetime假定您的请求。形式变量以正确的日期格式正确。到DateTime变量(
在您存储的过程中, 将参数包装在单引号中,因为它不会像参数一样将其视为参数,而将其视为一个值。尝试以下操作:
CREATE DEFINER=`root`@`localhost` PROCEDURE `userDetails`(IN @nickName VARCHAR(15),
IN @dob DATE, IN @joinDt DATE, IN @memType INT(3), IN @usrname VARCHAR(15))
# rest of code
然后从应用程序侧进行这些更改为c#代码:
MySqlParameter p1 = new MySqlParameter("@nickName", nickNameTB.Text);
// Other parameters