void Button1_Click(object sender, EventArgs e)
{
try
{
string Connectstr = "Provider=MSDAORA;user id=bgzdh;data source=zymis;password=bgzdh2005";
OleDbConnection Connection = new OleDbConnection(Connectstr);
OleDbCommand Command = new OleDbCommand("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES (@TITLE,@AUTHOR,@AUTH_UNIT,@EDITOR,@TYPE,@MEDIA,@POST_DATE,@ZY_DATE,@YT_DATE,@TV_DATE,@BS_DATE,@REMARK)",Connection);
Command.Parameters.Add(new OleDbParameter("@TITLE", System.Data.OleDb.OleDbType.VarWChar, 50));
Command.Parameters.Add(new OleDbParameter("@AUTHOR", OleDbType.VarChar, 22));
Command.Parameters.Add(new OleDbParameter("@AUTH_UNIT", OleDbType.VarChar, 50));
Command.Parameters.Add(new OleDbParameter("@EDITOR", OleDbType.VarChar, 22));
Command.Parameters.Add(new OleDbParameter("@TYPE", OleDbType.VarChar, 10));
Command.Parameters.Add(new OleDbParameter("@MEDIA", OleDbType.VarChar, 20));
Command.Parameters.Add(new OleDbParameter("@POST_DATE", OleDbType.DBDate, 0));
Command.Parameters.Add(new OleDbParameter("@ZY_DATE", OleDbType.DBDate, 0));
Command.Parameters.Add(new OleDbParameter("@YT_DATE", OleDbType.DBDate, 0));
Command.Parameters.Add(new OleDbParameter("@TV_DATE", OleDbType.DBDate, 0));
Command.Parameters.Add(new OleDbParameter("@BS_DATE", OleDbType.DBDate, 0));
Command.Parameters.Add(new OleDbParameter("@REMARK", OleDbType.VarChar, 50));
Command.Parameters["@TITLE"].Value=TextBox1.Text;
Command.Parameters["@AUTHOR"].Value=TextBox2.Text;
Command.Parameters["@AUTH_UNIT"].Value=TextBox3.Text;
Command.Parameters["@EDITOR"].Value=TextBox4.Text;
Command.Parameters["@TYPE"].Value=DropDownList1.SelectedItem.Text;
Command.Parameters["@MEDIA"].Value=DropDownList2.SelectedItem.Text;
Command.Parameters["@POST_DATE"].Value=TextBox5.Text;
Command.Parameters["@ZY_DATE"].Value=TextBox6.Text;
Command.Parameters["@YT_DATE"].Value=TextBox7.Text;
Command.Parameters["@TV_DATE"].Value=TextBox8.Text;
Command.Parameters["@BS_DATE"].Value=TextBox9.Text;
Command.Parameters["@REMARK"].Value=TextBox10.Text;
Connection.Open();
Command.ExecuteNonQuery();
Connection.Close();
}
catch (System.Data.OleDb.OleDbException ex)
{
Response.Write(ex.Message.ToString());
}
}
11 个解决方案
#1
把OleDbCommand Command = new OleDbCommand("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES (@TITLE,@AUTHOR,@AUTH_UNIT,@EDITOR,@TYPE,@MEDIA,@POST_DATE,@ZY_DATE,@YT_DATE,@TV_DATE,@BS_DATE,@REMARK)",Connection);
放到
Connection.Open();
Command.ExecuteNonQuery();
前面试试,是不是你放的太前了,还没给他赋值呢
然后再检查一下类型是不是匹配
放到
Connection.Open();
Command.ExecuteNonQuery();
前面试试,是不是你放的太前了,还没给他赋值呢
然后再检查一下类型是不是匹配
#2
看看类型!
#3
类型应该没问题,我都检查过了
#4
你这上面的取值方式,完全没有根据数据字段的要求转换为相应的格式,这样能写进去吗?
比如象下面这样
Command.Parameters["@POST_DATE"].Value=TextBox5.Text;
就应该写成
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
其他相应的数据也必须一一进行转换
比如象下面这样
Command.Parameters["@POST_DATE"].Value=TextBox5.Text;
就应该写成
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
其他相应的数据也必须一一进行转换
#5
将 Command.Parameters["@POST_DATE"].Value=TextBox5.Text;
Command.Parameters["@ZY_DATE"].Value=TextBox6.Text;
Command.Parameters["@YT_DATE"].Value=TextBox7.Text;
Command.Parameters["@TV_DATE"].Value=TextBox8.Text;
Command.Parameters["@BS_DATE"].Value=TextBox9.Text;
应该写成:
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
Command.Parameters["@ZY_DATE"].Value=DateTime.Parse(TextBox6.Text);
Command.Parameters["@YT_DATE"].Value=DateTime.Parse(TextBox7.Text);
Command.Parameters["@TV_DATE"].Value=DateTime.Parse(TextBox8.Text);
Command.Parameters["@BS_DATE"].Value=DateTime.Parse(TextBox9.Text);
后依然是同样的错误
Command.Parameters["@ZY_DATE"].Value=TextBox6.Text;
Command.Parameters["@YT_DATE"].Value=TextBox7.Text;
Command.Parameters["@TV_DATE"].Value=TextBox8.Text;
Command.Parameters["@BS_DATE"].Value=TextBox9.Text;
应该写成:
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
Command.Parameters["@ZY_DATE"].Value=DateTime.Parse(TextBox6.Text);
Command.Parameters["@YT_DATE"].Value=DateTime.Parse(TextBox7.Text);
Command.Parameters["@TV_DATE"].Value=DateTime.Parse(TextBox8.Text);
Command.Parameters["@BS_DATE"].Value=DateTime.Parse(TextBox9.Text);
后依然是同样的错误
#6
该字符串未被识别为有效的 DateTime
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
Command.Parameters["@ZY_DATE"].Value=DateTime.Parse(TextBox6.Text);
Command.Parameters["@YT_DATE"].Value=DateTime.Parse(TextBox7.Text);
Command.Parameters["@TV_DATE"].Value=DateTime.Parse(TextBox8.Text);
Command.Parameters["@BS_DATE"].Value=DateTime.Parse(TextBox9.Text);
凡是上面列出的日期型的字段的值未被识别为有效的 DateTime,该怎么弄啊?
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
Command.Parameters["@ZY_DATE"].Value=DateTime.Parse(TextBox6.Text);
Command.Parameters["@YT_DATE"].Value=DateTime.Parse(TextBox7.Text);
Command.Parameters["@TV_DATE"].Value=DateTime.Parse(TextBox8.Text);
Command.Parameters["@BS_DATE"].Value=DateTime.Parse(TextBox9.Text);
凡是上面列出的日期型的字段的值未被识别为有效的 DateTime,该怎么弄啊?
#7
对不起!是我搞错了,楼主的写入方式没有问题,我上面说的是运用存储过程写的时候才那样的.
但我记得,ORACLE写入的时候,不应该是如下啊
("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES (@TITLE,@AUTHOR,@AUTH_UNIT,@EDITOR,@TYPE,@MEDIA,@POST_DATE,@ZY_DATE,@YT_DATE,@TV_DATE,@BS_DATE,@REMARK)"
后面值部分的@号,应是:号.
然后赋值部分
Command.Parameters["@BS_DATE"].Value=TextBox9.Text;
里面的@号就可以去除了.
还有时间里面的Command.Parameters.Add(new OleDbParameter("@BS_DATE", OleDbType.DBDate, 0));,最后面的长度把它去了吧.
但我记得,ORACLE写入的时候,不应该是如下啊
("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES (@TITLE,@AUTHOR,@AUTH_UNIT,@EDITOR,@TYPE,@MEDIA,@POST_DATE,@ZY_DATE,@YT_DATE,@TV_DATE,@BS_DATE,@REMARK)"
后面值部分的@号,应是:号.
然后赋值部分
Command.Parameters["@BS_DATE"].Value=TextBox9.Text;
里面的@号就可以去除了.
还有时间里面的Command.Parameters.Add(new OleDbParameter("@BS_DATE", OleDbType.DBDate, 0));,最后面的长度把它去了吧.
#8
Connection.Open();
放的太后了
放的太后了
#9
搞错了,应该是你的connection字符串有问题
#10
我的string Connectstr = "Provider=msdaora;user id=bgzdh;data source=zymis;password=bgzdh2005"; 有什么不对吗?
在Page_Load里连接到oracle是没问题的呀;就是初始化页面中的一些控件时从库里提出数据来初始化的,初始化控件是好好的,怎么会Connectstr 有问题啊?
在Page_Load里连接到oracle是没问题的呀;就是初始化页面中的一些控件时从库里提出数据来初始化的,初始化控件是好好的,怎么会Connectstr 有问题啊?
#11
终于自己解决了;问题的关键在于Oracle日期转换函数(将字符串转换为日期: to_date('2005-04-29','yyyy-mm-dd'))。
将字符串格式化为日期型格式时用 Convert.ToDateTime(TextBox5.Text).ToString("yyyy-MM-dd")。
代码如下:
void Button1_Click(object sender, EventArgs e) {
string Connectstr = "Provider=msdaora;user id=bgzdh;data source=zymis;password=bgzdh2005";
OleDbConnection Connection = new OleDbConnection(Connectstr);
string tit="",aut="",aun="",edt="",typ="",med="",posD="",zyD="",ytD="",tvD="",bsD="",rem="";
tit=TextBox1.Text;
aut=TextBox2.Text;
aun=TextBox3.Text;
edt=TextBox4.Text;
typ=DropDownList1.SelectedItem.Text;
med=DropDownList2.SelectedItem.Text;
posD=TextBox5.Text;
zyD=TextBox6.Text;
ytD=TextBox7.Text;
tvD=TextBox8.Text;
bsD=TextBox9.Text;
rem=TextBox10.Text;
OleDbCommand Command = new OleDbCommand("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES ('"+tit+"','"+aut+"','"+aun+"','"+edt+"','"+typ+"','"+med+"',to_date('"+posD+"','yyyy-mm-dd'),to_date('"+zyD+"','yyyy-mm-dd'),to_date('"+ytD+"','yyyy-mm-dd'),to_date('"+tvD+"','yyyy-mm-dd'),to_date('"+bsD+"','yyyy-mm-dd'),'"+rem+"')",Connection);
Connection.Open();
Command.ExecuteNonQuery();
Connection.Close();
}
非常感谢各位高人的指点!
将字符串格式化为日期型格式时用 Convert.ToDateTime(TextBox5.Text).ToString("yyyy-MM-dd")。
代码如下:
void Button1_Click(object sender, EventArgs e) {
string Connectstr = "Provider=msdaora;user id=bgzdh;data source=zymis;password=bgzdh2005";
OleDbConnection Connection = new OleDbConnection(Connectstr);
string tit="",aut="",aun="",edt="",typ="",med="",posD="",zyD="",ytD="",tvD="",bsD="",rem="";
tit=TextBox1.Text;
aut=TextBox2.Text;
aun=TextBox3.Text;
edt=TextBox4.Text;
typ=DropDownList1.SelectedItem.Text;
med=DropDownList2.SelectedItem.Text;
posD=TextBox5.Text;
zyD=TextBox6.Text;
ytD=TextBox7.Text;
tvD=TextBox8.Text;
bsD=TextBox9.Text;
rem=TextBox10.Text;
OleDbCommand Command = new OleDbCommand("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES ('"+tit+"','"+aut+"','"+aun+"','"+edt+"','"+typ+"','"+med+"',to_date('"+posD+"','yyyy-mm-dd'),to_date('"+zyD+"','yyyy-mm-dd'),to_date('"+ytD+"','yyyy-mm-dd'),to_date('"+tvD+"','yyyy-mm-dd'),to_date('"+bsD+"','yyyy-mm-dd'),'"+rem+"')",Connection);
Connection.Open();
Command.ExecuteNonQuery();
Connection.Close();
}
非常感谢各位高人的指点!
#1
把OleDbCommand Command = new OleDbCommand("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES (@TITLE,@AUTHOR,@AUTH_UNIT,@EDITOR,@TYPE,@MEDIA,@POST_DATE,@ZY_DATE,@YT_DATE,@TV_DATE,@BS_DATE,@REMARK)",Connection);
放到
Connection.Open();
Command.ExecuteNonQuery();
前面试试,是不是你放的太前了,还没给他赋值呢
然后再检查一下类型是不是匹配
放到
Connection.Open();
Command.ExecuteNonQuery();
前面试试,是不是你放的太前了,还没给他赋值呢
然后再检查一下类型是不是匹配
#2
看看类型!
#3
类型应该没问题,我都检查过了
#4
你这上面的取值方式,完全没有根据数据字段的要求转换为相应的格式,这样能写进去吗?
比如象下面这样
Command.Parameters["@POST_DATE"].Value=TextBox5.Text;
就应该写成
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
其他相应的数据也必须一一进行转换
比如象下面这样
Command.Parameters["@POST_DATE"].Value=TextBox5.Text;
就应该写成
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
其他相应的数据也必须一一进行转换
#5
将 Command.Parameters["@POST_DATE"].Value=TextBox5.Text;
Command.Parameters["@ZY_DATE"].Value=TextBox6.Text;
Command.Parameters["@YT_DATE"].Value=TextBox7.Text;
Command.Parameters["@TV_DATE"].Value=TextBox8.Text;
Command.Parameters["@BS_DATE"].Value=TextBox9.Text;
应该写成:
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
Command.Parameters["@ZY_DATE"].Value=DateTime.Parse(TextBox6.Text);
Command.Parameters["@YT_DATE"].Value=DateTime.Parse(TextBox7.Text);
Command.Parameters["@TV_DATE"].Value=DateTime.Parse(TextBox8.Text);
Command.Parameters["@BS_DATE"].Value=DateTime.Parse(TextBox9.Text);
后依然是同样的错误
Command.Parameters["@ZY_DATE"].Value=TextBox6.Text;
Command.Parameters["@YT_DATE"].Value=TextBox7.Text;
Command.Parameters["@TV_DATE"].Value=TextBox8.Text;
Command.Parameters["@BS_DATE"].Value=TextBox9.Text;
应该写成:
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
Command.Parameters["@ZY_DATE"].Value=DateTime.Parse(TextBox6.Text);
Command.Parameters["@YT_DATE"].Value=DateTime.Parse(TextBox7.Text);
Command.Parameters["@TV_DATE"].Value=DateTime.Parse(TextBox8.Text);
Command.Parameters["@BS_DATE"].Value=DateTime.Parse(TextBox9.Text);
后依然是同样的错误
#6
该字符串未被识别为有效的 DateTime
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
Command.Parameters["@ZY_DATE"].Value=DateTime.Parse(TextBox6.Text);
Command.Parameters["@YT_DATE"].Value=DateTime.Parse(TextBox7.Text);
Command.Parameters["@TV_DATE"].Value=DateTime.Parse(TextBox8.Text);
Command.Parameters["@BS_DATE"].Value=DateTime.Parse(TextBox9.Text);
凡是上面列出的日期型的字段的值未被识别为有效的 DateTime,该怎么弄啊?
Command.Parameters["@POST_DATE"].Value=DateTime.Parse(TextBox5.Text);
Command.Parameters["@ZY_DATE"].Value=DateTime.Parse(TextBox6.Text);
Command.Parameters["@YT_DATE"].Value=DateTime.Parse(TextBox7.Text);
Command.Parameters["@TV_DATE"].Value=DateTime.Parse(TextBox8.Text);
Command.Parameters["@BS_DATE"].Value=DateTime.Parse(TextBox9.Text);
凡是上面列出的日期型的字段的值未被识别为有效的 DateTime,该怎么弄啊?
#7
对不起!是我搞错了,楼主的写入方式没有问题,我上面说的是运用存储过程写的时候才那样的.
但我记得,ORACLE写入的时候,不应该是如下啊
("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES (@TITLE,@AUTHOR,@AUTH_UNIT,@EDITOR,@TYPE,@MEDIA,@POST_DATE,@ZY_DATE,@YT_DATE,@TV_DATE,@BS_DATE,@REMARK)"
后面值部分的@号,应是:号.
然后赋值部分
Command.Parameters["@BS_DATE"].Value=TextBox9.Text;
里面的@号就可以去除了.
还有时间里面的Command.Parameters.Add(new OleDbParameter("@BS_DATE", OleDbType.DBDate, 0));,最后面的长度把它去了吧.
但我记得,ORACLE写入的时候,不应该是如下啊
("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES (@TITLE,@AUTHOR,@AUTH_UNIT,@EDITOR,@TYPE,@MEDIA,@POST_DATE,@ZY_DATE,@YT_DATE,@TV_DATE,@BS_DATE,@REMARK)"
后面值部分的@号,应是:号.
然后赋值部分
Command.Parameters["@BS_DATE"].Value=TextBox9.Text;
里面的@号就可以去除了.
还有时间里面的Command.Parameters.Add(new OleDbParameter("@BS_DATE", OleDbType.DBDate, 0));,最后面的长度把它去了吧.
#8
Connection.Open();
放的太后了
放的太后了
#9
搞错了,应该是你的connection字符串有问题
#10
我的string Connectstr = "Provider=msdaora;user id=bgzdh;data source=zymis;password=bgzdh2005"; 有什么不对吗?
在Page_Load里连接到oracle是没问题的呀;就是初始化页面中的一些控件时从库里提出数据来初始化的,初始化控件是好好的,怎么会Connectstr 有问题啊?
在Page_Load里连接到oracle是没问题的呀;就是初始化页面中的一些控件时从库里提出数据来初始化的,初始化控件是好好的,怎么会Connectstr 有问题啊?
#11
终于自己解决了;问题的关键在于Oracle日期转换函数(将字符串转换为日期: to_date('2005-04-29','yyyy-mm-dd'))。
将字符串格式化为日期型格式时用 Convert.ToDateTime(TextBox5.Text).ToString("yyyy-MM-dd")。
代码如下:
void Button1_Click(object sender, EventArgs e) {
string Connectstr = "Provider=msdaora;user id=bgzdh;data source=zymis;password=bgzdh2005";
OleDbConnection Connection = new OleDbConnection(Connectstr);
string tit="",aut="",aun="",edt="",typ="",med="",posD="",zyD="",ytD="",tvD="",bsD="",rem="";
tit=TextBox1.Text;
aut=TextBox2.Text;
aun=TextBox3.Text;
edt=TextBox4.Text;
typ=DropDownList1.SelectedItem.Text;
med=DropDownList2.SelectedItem.Text;
posD=TextBox5.Text;
zyD=TextBox6.Text;
ytD=TextBox7.Text;
tvD=TextBox8.Text;
bsD=TextBox9.Text;
rem=TextBox10.Text;
OleDbCommand Command = new OleDbCommand("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES ('"+tit+"','"+aut+"','"+aun+"','"+edt+"','"+typ+"','"+med+"',to_date('"+posD+"','yyyy-mm-dd'),to_date('"+zyD+"','yyyy-mm-dd'),to_date('"+ytD+"','yyyy-mm-dd'),to_date('"+tvD+"','yyyy-mm-dd'),to_date('"+bsD+"','yyyy-mm-dd'),'"+rem+"')",Connection);
Connection.Open();
Command.ExecuteNonQuery();
Connection.Close();
}
非常感谢各位高人的指点!
将字符串格式化为日期型格式时用 Convert.ToDateTime(TextBox5.Text).ToString("yyyy-MM-dd")。
代码如下:
void Button1_Click(object sender, EventArgs e) {
string Connectstr = "Provider=msdaora;user id=bgzdh;data source=zymis;password=bgzdh2005";
OleDbConnection Connection = new OleDbConnection(Connectstr);
string tit="",aut="",aun="",edt="",typ="",med="",posD="",zyD="",ytD="",tvD="",bsD="",rem="";
tit=TextBox1.Text;
aut=TextBox2.Text;
aun=TextBox3.Text;
edt=TextBox4.Text;
typ=DropDownList1.SelectedItem.Text;
med=DropDownList2.SelectedItem.Text;
posD=TextBox5.Text;
zyD=TextBox6.Text;
ytD=TextBox7.Text;
tvD=TextBox8.Text;
bsD=TextBox9.Text;
rem=TextBox10.Text;
OleDbCommand Command = new OleDbCommand("INSERT INTO XC_DWTG(TITLE, AUTHOR, AUTH_UNIT, EDITOR, TYPE, MEDIA, POST_DATE, ZY_DATE, YT_DATE, TV_DATE, BS_DATE, REMARK) VALUES ('"+tit+"','"+aut+"','"+aun+"','"+edt+"','"+typ+"','"+med+"',to_date('"+posD+"','yyyy-mm-dd'),to_date('"+zyD+"','yyyy-mm-dd'),to_date('"+ytD+"','yyyy-mm-dd'),to_date('"+tvD+"','yyyy-mm-dd'),to_date('"+bsD+"','yyyy-mm-dd'),'"+rem+"')",Connection);
Connection.Open();
Command.ExecuteNonQuery();
Connection.Close();
}
非常感谢各位高人的指点!