操作数类型冲突:int与日期不兼容 [英] Operand type clash: int is incompatible with date
问题描述
我的代码
ed = 1;
con = new SqlConnection(conn);
UID = Login.UID;
DateTime dt = DateTime.Now;
char sex;
int s;
if(rbtmale.Checked == true)
{
sex ='M';
}
else
{
sex ='F';
}
if(rbtactive .Checked == true)
{
s = 1;
}
其他
{
s = 0;
}
if(txtsname.Text!=|| txtadd.Text!= || txtdob.Text!=|| txtcdate.Text!=|| txtdoj.Text!=|| txtdown.Text!=|| txtrfee.Text!=)
{
cmd =新的SqlC ommand(插入注册值(@ reg,@ sname,@ add,@ gen,@ dob,@ ph,@ qul,@ gau,@ cid,@ ctid,@ cdur,@ cfee,@ doj,@ ccdate, @ regFee,@ dpay,@ ss,@ uid,@ crdate,@ upuid,@ update,1),con);
con.Open();
cmd.Parameters.AddWithValue(@ reg,txtreg.Text);
cmd.Parameters.AddWithValue(@ sname,txtsname.Text);
cmd。 Parameters.AddWithValue(@ add,txtadd.Text);
cmd.Parameters.AddWithValue(@ gen,sex);
cmd.Parameters.AddWithValue( @dob,SqlDbType.DateTime).Value = dateTimePicker1.Value.Date;
//cmd.Parameters.AddWithValue(\"@dob,Convert.ToDateTime(txtdob.Text));
cmd.Parameters.AddWithValue(@ ph,txtph.Text);
cmd.Parameters.AddWithValue(@ qul,Convert.ToInt32(cmbqua.SelectedValue。 ToString()));
cmd.Parameters.AddWithValue(@ gau,txtgurd.Text);
cmd.Parameters.AddWithValue(@ cid,Convert.ToInt32(cmbcourse.SelectedValue.ToString()));
cmd.Parameters.AddWithValue(@ ctid ,Convert.ToInt32(cmbcat.SelectedValue.ToString()));
cmd.Parameters.AddWithValue(@ cdur,txtduration.Text);
cmd.Parameters .AddWithValue(@ cfee,Convert.ToDouble(txtfee.Text));
// cmd.Parameters.AddWithValue(@ doj,Convert.ToDateTime(txtdoj.Text));
cmd.Parameters.AddWithValue(@ doj,SqlDbType.DateTime).Value = dateTimePicker2.Value.Date;
// cmd.Parameters.AddWithValue(@ ccdate ,Convert.ToDateTime(txtcdate.Text));
cmd.Parameters.AddWithValue(@ ccdate,SqlDbType.DateTime).Value = txtcdate.Text;
cmd.Parameters.AddWithValue(@ regFee,Convert.ToDouble(txtrfee .Text));
cmd.Parameters.AddWithValue(@ dpay,C onvert.ToDouble(txtdown.Text));
cmd.Parameters.AddWithValue(@ ss,s);
cmd.Parameters.AddWithValue(@ uid ,UID);
cmd.Parameters.AddWithValue(@ crdate,dt);
cmd.Parameters.AddWithValue(@ upuid,UID);
cmd.Parameters.AddWithValue(@ update,dt);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(成功插入记录);
DisplayData();
enabledisable();
ClearData ();
}
我的桌子结构
RegNo nvarchar(7)未选中
sname nvarchar(100)未选中
地址nvarchar(100)未选中
性别字符(1)未选中
DOB日期时间未选中
电话号码(10)未选中
资格nvarchar(50)未选中
gau rdian nvarchar(100)Checked
CourseID int未选中
Catid int未选中
Cduration nchar(10)未选中
Cfee数字(18,2)未选中
DOJ datetime未选中
CCDate datetime未选中
regFee decimal(18,2)未选中
DownPay十进制(18,2)未选中
StuStatus int未选中
createdDate date未选中
createUser int未选中
updatedUser int未选中
updatedDate date未选中
statuse int未选中
我是什么尝试过:
ed = 1;
con = new SqlConnection(conn);
UID = Login.UID;
DateTime dt = DateTime.Now;
char sex;
int s;
if(rbtmale.Checked == true)
{
sex ='M';
}
其他
{
sex ='F';
}
if(rbtactive .Checked == true)
{
s = 1;
}
其他
{
s = 0;
}
if(txtsname.Text!=|| txtadd.Text!=|| txtdob.Text!=|| txtcdate.Text!=| | txtdoj.Text!=|| txtdown.Text!=|| txtrfee.Text!=)
{
cmd = new SqlCommand(插入注册值(@reg, @ SNAME,@加,@根,@ DOB,@ pH值,@ QUL,@ GAU,@ CID,@ CTID,@ cdur,@ cfee,@司法部,@ ccdate,@ regFee,@ DPAY,@ SS,@ UID ,@ crdate,@ upuid,@ update,1),con);
con.Open();
cmd.Parameters.AddWithValue(@ reg,txtreg.Text);
cmd.Parameters.AddWithValue(@ sname,txtsname.Text);
cmd.Parameters.AddWithValue(@ add,txtadd.Text);
cmd.Parameters.AddWithValue(@ gen,sex);
cmd.Parameters.AddWithValue(@ dob,SqlDbType.DateTime).Value = dateTimePicker1.Value.Date;
//cmd.Parameters.AddWithValue(\"@dob,Convert.ToDateTime(txtdob.Text));
cmd.Parameters.AddWithValue(@ ph,txtph.Text);
cmd.Parameters.AddWithValue(@ qul,Convert.ToInt32(cmbqua.SelectedValue.ToString()));
cmd.Parameters.AddWithValue(@ gau,txtgurd.Text);
cmd.Parameters.AddWithValue(@ cid,Convert.ToInt32(cmbcourse.SelectedValue.ToString()));
cmd.Parameters.AddWithValue(@ ctid,Convert.ToInt32(cmbcat.SelectedValue.ToString()));
cmd.Parameters.AddWithValue(@ cdur,txtduration.Text);
cmd.Parameters.AddWithValue(@ cfee,Convert.ToDouble(txtfee.Text));
// cmd.Parameters.AddWithValue(@ doj,Convert.ToDateTime(txtdoj.Text));
cmd.Parameters.AddWithValue(@ doj,SqlDbType.DateTime).Value = dateTimePicker2.Value.Date;
// cmd.Parameters.AddWithValue(@ ccdate,Convert.ToDateTime(txtcdate.Text));
cmd.Parameters.AddWithValue(@ ccdate,SqlDbType.DateTime).Value = txtcdate.Text;
cmd.Parameters.AddWithValue(@ regFee,Convert.ToDouble(txtrfee .Text));
cmd.Parameters.AddWithValue(@ dpay,Convert.ToDouble(txtdown.Text));
cmd.Parameters.AddWithValue(@ ss,s);
cmd.Parameters.AddWithValue(@ uid,UID);
cmd.Parameters.AddWithValue(@ crdate,dt);
cmd.Parameters.AddWithValue(@ upuid,UID);
cmd.Parameters.AddWithValue(@ update,dt);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(记录已成功插入);
DisplayData();
enabledisable();
ClearData();
}
任何人帮我......请解决此错误
因为您没有列出要插入的列,所以SQL首先启动,然后按原样输入值。
并且您的数据与表格不符:
...,@ dpay,@ ss,@ uid,@ crdate,@ upuid,...
cmd.Parameters.AddWithValue(@ dpay,Convert.ToDouble(txtdown.Text));
cmd.Parameters.AddWithValue(@ ss,s);
cmd.Parameters.AddWithValue(@ uid,UID);
cmd.Parameters.AddWithValue(@ crdate,dt);
cmd.Parameters.AddWithValue(@ upuid,UID);
DownPay decimal(18,2)未选中
StuStatus int未选中
createdDate date未选中
createUser int未选中因此SQ会尝试将您的uid值放入createdDate列,但不能。
总是列出列名:看起来似乎还有很多工作,但它将来会证明你的应用程序可以防止数据库更改以及防止这样的问题。
INSERT INTO MyTable(Column1,Column2) VALUES ( @ C1 , @ C2 )
My code
ed = 1;
con = new SqlConnection(conn);
UID = Login.UID;
DateTime dt = DateTime.Now;
char sex;
int s;
if(rbtmale.Checked==true)
{
sex='M';
}
else
{
sex='F';
}
if (rbtactive .Checked == true)
{
s = 1;
}
else
{
s = 0;
}
if (txtsname.Text!=""||txtadd.Text!=""||txtdob.Text !=""||txtcdate.Text!=""||txtdoj.Text!=""||txtdown.Text!=""||txtrfee.Text!="")
{
cmd = new SqlCommand("insert into Registration values(@reg,@sname,@add,@gen,@dob,@ph,@qul,@gau,@cid,@ctid,@cdur,@cfee,@doj,@ccdate,@regFee,@dpay,@ss,@uid,@crdate,@upuid,@update,1)", con);
con.Open();
cmd.Parameters.AddWithValue("@reg", txtreg.Text);
cmd.Parameters.AddWithValue("@sname", txtsname.Text);
cmd.Parameters.AddWithValue("@add", txtadd.Text);
cmd.Parameters.AddWithValue("@gen", sex);
cmd.Parameters.AddWithValue("@dob", SqlDbType.DateTime).Value=dateTimePicker1.Value.Date ;
//cmd.Parameters.AddWithValue("@dob", Convert.ToDateTime(txtdob.Text));
cmd.Parameters.AddWithValue("@ph", txtph.Text);
cmd.Parameters.AddWithValue("@qul", Convert.ToInt32(cmbqua.SelectedValue.ToString()));
cmd.Parameters.AddWithValue("@gau", txtgurd.Text);
cmd.Parameters.AddWithValue("@cid", Convert.ToInt32(cmbcourse.SelectedValue.ToString()));
cmd.Parameters.AddWithValue("@ctid", Convert.ToInt32(cmbcat.SelectedValue.ToString()));
cmd.Parameters.AddWithValue("@cdur",txtduration.Text);
cmd.Parameters.AddWithValue("@cfee",Convert.ToDouble(txtfee.Text));
// cmd.Parameters.AddWithValue("@doj",Convert.ToDateTime(txtdoj.Text));
cmd.Parameters.AddWithValue("@doj", SqlDbType.DateTime).Value = dateTimePicker2.Value.Date;
// cmd.Parameters.AddWithValue("@ccdate",Convert.ToDateTime(txtcdate.Text));
cmd.Parameters.AddWithValue("@ccdate", SqlDbType.DateTime).Value = txtcdate.Text;
cmd.Parameters.AddWithValue("@regFee", Convert.ToDouble(txtrfee .Text));
cmd.Parameters.AddWithValue("@dpay",Convert.ToDouble(txtdown.Text));
cmd.Parameters.AddWithValue("@ss", s);
cmd.Parameters.AddWithValue("@uid", UID);
cmd.Parameters.AddWithValue("@crdate", dt);
cmd.Parameters.AddWithValue("@upuid", UID);
cmd.Parameters.AddWithValue("@update", dt);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Record Inserted Successfully");
DisplayData();
enabledisable();
ClearData();
}
my table structure
RegNo nvarchar(7) Unchecked sname nvarchar(100) Unchecked address nvarchar(100) Unchecked gender char(1) Unchecked DOB datetime Unchecked Phone nchar(10) Unchecked qualification nvarchar(50) Unchecked gaurdian nvarchar(100) Checked CourseID int Unchecked Catid int Unchecked Cduration nchar(10) Unchecked Cfee numeric(18, 2) Unchecked DOJ datetime Unchecked CCDate datetime Unchecked regFee decimal(18, 2) Unchecked DownPay decimal(18, 2) Unchecked StuStatus int Unchecked createdDate date Unchecked createUser int Unchecked updatedUser int Unchecked updatedDate date Unchecked statuse int Unchecked
What I have tried:
ed = 1; con = new SqlConnection(conn); UID = Login.UID; DateTime dt = DateTime.Now; char sex; int s; if(rbtmale.Checked==true) { sex='M'; } else { sex='F'; } if (rbtactive .Checked == true) { s = 1; } else { s = 0; } if (txtsname.Text!=""||txtadd.Text!=""||txtdob.Text !=""||txtcdate.Text!=""||txtdoj.Text!=""||txtdown.Text!=""||txtrfee.Text!="") { cmd = new SqlCommand("insert into Registration values(@reg,@sname,@add,@gen,@dob,@ph,@qul,@gau,@cid,@ctid,@cdur,@cfee,@doj,@ccdate,@regFee,@dpay,@ss,@uid,@crdate,@upuid,@update,1)", con); con.Open(); cmd.Parameters.AddWithValue("@reg", txtreg.Text); cmd.Parameters.AddWithValue("@sname", txtsname.Text); cmd.Parameters.AddWithValue("@add", txtadd.Text); cmd.Parameters.AddWithValue("@gen", sex); cmd.Parameters.AddWithValue("@dob", SqlDbType.DateTime).Value=dateTimePicker1.Value.Date ; //cmd.Parameters.AddWithValue("@dob", Convert.ToDateTime(txtdob.Text)); cmd.Parameters.AddWithValue("@ph", txtph.Text); cmd.Parameters.AddWithValue("@qul", Convert.ToInt32(cmbqua.SelectedValue.ToString())); cmd.Parameters.AddWithValue("@gau", txtgurd.Text); cmd.Parameters.AddWithValue("@cid", Convert.ToInt32(cmbcourse.SelectedValue.ToString())); cmd.Parameters.AddWithValue("@ctid", Convert.ToInt32(cmbcat.SelectedValue.ToString())); cmd.Parameters.AddWithValue("@cdur",txtduration.Text); cmd.Parameters.AddWithValue("@cfee",Convert.ToDouble(txtfee.Text)); // cmd.Parameters.AddWithValue("@doj",Convert.ToDateTime(txtdoj.Text)); cmd.Parameters.AddWithValue("@doj", SqlDbType.DateTime).Value = dateTimePicker2.Value.Date; // cmd.Parameters.AddWithValue("@ccdate",Convert.ToDateTime(txtcdate.Text)); cmd.Parameters.AddWithValue("@ccdate", SqlDbType.DateTime).Value = txtcdate.Text; cmd.Parameters.AddWithValue("@regFee", Convert.ToDouble(txtrfee .Text)); cmd.Parameters.AddWithValue("@dpay",Convert.ToDouble(txtdown.Text)); cmd.Parameters.AddWithValue("@ss", s); cmd.Parameters.AddWithValue("@uid", UID); cmd.Parameters.AddWithValue("@crdate", dt); cmd.Parameters.AddWithValue("@upuid", UID); cmd.Parameters.AddWithValue("@update", dt); cmd.ExecuteNonQuery(); con.Close(); MessageBox.Show("Record Inserted Successfully"); DisplayData(); enabledisable(); ClearData(); }
any one help me......please solve this error
Because you don't list the columns you are INSERTing into, SQL starts withteh first and feeds the values in as it goes.
And your data doesn't match the table:
...,@dpay,@ss,@uid,@crdate,@upuid,...
cmd.Parameters.AddWithValue("@dpay",Convert.ToDouble(txtdown.Text)); cmd.Parameters.AddWithValue("@ss", s); cmd.Parameters.AddWithValue("@uid", UID); cmd.Parameters.AddWithValue("@crdate", dt); cmd.Parameters.AddWithValue("@upuid", UID);
DownPay decimal(18, 2) Unchecked StuStatus int Unchecked createdDate date Unchecked createUser int UncheckedSo SQ tries to put your uid value into the createdDate column and can't.
Always list the column names: it may seem like a lot more work, but it future proofs your app against DB changes as well as preventing problems like this.
INSERT INTO MyTable (Column1, Column2) VALUES (@C1, @C2)
这篇关于操作数类型冲突:int与日期不兼容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!