操作数类型冲突:int与日期不兼容 [英] Operand type clash: int is incompatible with date

查看:454
本文介绍了操作数类型冲突:int与日期不兼容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码



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	Unchecked

So 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆