总是报错,大家一般都是怎样修改时间字段的值的啊?
32 个解决方案
#1
OleDbParameter parameter = new OleDbParameter();
parameter.OleDbType = OleDbType.DBDate;
parameter.Value = DateTime.Now;
cmd.Parameters.Add(parameter);
//这样传参数看看
或者你先在程序里面把时间格式转换成string,然后插入。不过不知道拼sql语句要不要转换
#2
其它字段能否修改?如果能,可能你的日期格式错误,
#3
我是这样写的 传的是一个参数数组 不过原理和你的一样
OledbParameter[] parameters={
new OledbParameter("paraName",paraType),
.......
};
//指定参数的值
parameters[index]=value;
然后调用AccessHelper类中的方法
只要是带上修改时间字段的都抛异常 只要不修改时间字段 就可以修改成功
#4
2010-5-7这个格式就行么
#5
access中时间是要这么写的
update table set time=#2007-07-08 12:10:00#
他是用##隔开的 你看一下
update table set time=#2007-07-08 12:10:00#
他是用##隔开的 你看一下
#6
现在格式不要紧 只要可以修改就行
不过最好是能精确到时 分
但是只要能够修改就行
现在就是修改不了时间字段
#7
在C#里面DateTime.Now和access里面DateTime.Now格式不一样!
我以前做过这,只要把格式转换一下就可以了!time
2010-4-7 11:30:03
我以前做过这,只要把格式转换一下就可以了!time
2010-4-7 11:30:03
#8
是不是拼接sql语句的时候 在时间变量的前后加上'#'号啊?
#9
但是我执行 你上面那条sql语句的时候 提示有语法错误啊?
#10
怎样转换,转换成什么格式啊?
#11
我在ACCESS2000中是这样使用更新数据库的,现在正在使用中,见我的页面:
http://nz.oicp.net:81
protected void Button3_Click(object sender, EventArgs e)
{//修改更新
string i = Request.QueryString["ID"].ToString();//上页传来的ID
int j = Convert.ToInt32(i);
string tabel_name = Session["tabel_name"].ToString();//上页的Session的数据表名
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\studentinfo.mdb");
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select * from "+tabel_name+" where id =" + j, conn);
OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "basic_info");
//...
ds.Tables["basic_info"].Rows[0]["diploma_date"] = TextBox17.Text.ToString();//日期格式:2010-05-08
//...
da.Update(ds, "basic_info"); //更新到数据库
conn.Close();
}
protected void Button3_Click(object sender, EventArgs e)
{//修改更新
string i = Request.QueryString["ID"].ToString();//上页传来的ID
int j = Convert.ToInt32(i);
string tabel_name = Session["tabel_name"].ToString();//上页的Session的数据表名
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\studentinfo.mdb");
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select * from "+tabel_name+" where id =" + j, conn);
OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "basic_info");
//...
ds.Tables["basic_info"].Rows[0]["diploma_date"] = TextBox17.Text.ToString();//日期格式:2010-05-08
//...
da.Update(ds, "basic_info"); //更新到数据库
conn.Close();
}
#12
ds.Tables["basic_info"].Rows[0]["diploma_date"] = TextBox17.Text.ToString();//日期格式:2010-05-08
你数据库里面设定的时间字段是字符串类型的吧?但是我设置的是DateTime类型的。
你数据库里面设定的时间字段是字符串类型的吧?但是我设置的是DateTime类型的。
#13
我设置的
也是DateTime类型
#14
Carryontilltomorrow 把你的代码贴出来 看了帮你改一下
#15
后台点击保存时间
job.Name = txtName.Text;
job.Request = txtContent.Value;
if (CheckBox1.Checked)//选上刷新时间的复选框
{
job.Time = DateTime.Now;
}
result = JobBLL.Update(job);
if (result > 0)
{
Common.showResult(this, "已经成功修改一条招聘信息", "AddJob.aspx");
}
else
{
Common.showResult(this, "由于某种原因,操作失败,请稍后再试!", "AddJob.aspx");
}
//BLL层中的方法
public static int Update(Job job)
{
return JobDAL.Update(job);
}
DAL
public static int Update(Job job)
{
int result = 0;
OleDbParameter[] parameters ={
new OleDbParameter("@name",OleDbType.VarChar),
new OleDbParameter("@request",OleDbType.BSTR),
new OleDbParameter("@id",OleDbType.Integer),
new OleDbParameter("@time",OleDbType.DBDate)
};
parameters[0].Value = job.Name;
parameters[1].Value = job.Request;
parameters[2].Value = job.Id;
parameters[3].Value = job.Time.ToString();
String sql = "update job set name=@name,request=@request,time=@time where id=@id";
result = AccessHelper.ExeSqlReI(sql, parameters);
return result;
}
job.Name = txtName.Text;
job.Request = txtContent.Value;
if (CheckBox1.Checked)//选上刷新时间的复选框
{
job.Time = DateTime.Now;
}
result = JobBLL.Update(job);
if (result > 0)
{
Common.showResult(this, "已经成功修改一条招聘信息", "AddJob.aspx");
}
else
{
Common.showResult(this, "由于某种原因,操作失败,请稍后再试!", "AddJob.aspx");
}
//BLL层中的方法
public static int Update(Job job)
{
return JobDAL.Update(job);
}
DAL
public static int Update(Job job)
{
int result = 0;
OleDbParameter[] parameters ={
new OleDbParameter("@name",OleDbType.VarChar),
new OleDbParameter("@request",OleDbType.BSTR),
new OleDbParameter("@id",OleDbType.Integer),
new OleDbParameter("@time",OleDbType.DBDate)
};
parameters[0].Value = job.Name;
parameters[1].Value = job.Request;
parameters[2].Value = job.Id;
parameters[3].Value = job.Time.ToString();
String sql = "update job set name=@name,request=@request,time=@time where id=@id";
result = AccessHelper.ExeSqlReI(sql, parameters);
return result;
}
#16
你把参数顺序弄好了,绝对可以成功
#17
OleDbParameter[] parameters ={
new OleDbParameter("@name",OleDbType.VarChar),
new OleDbParameter("@request",OleDbType.BSTR),
new OleDbParameter("@time",OleDbType.DBDate),
new OleDbParameter("@id",OleDbType.Integer)
};
new OleDbParameter("@name",OleDbType.VarChar),
new OleDbParameter("@request",OleDbType.BSTR),
new OleDbParameter("@time",OleDbType.DBDate),
new OleDbParameter("@id",OleDbType.Integer)
};
#18
先试第一种
parameters[3].Value = job.Time.ToString();
改成
parameters[3].Value = job.Time;
有问题的话就试第二种
String sql = "update job set name=@name,request=@request,time=@time where id=@id";
改成
String sql = "update job set name=@name,request=@request,time=#"+job.Time.ToString()+"# where id=@id";
第二种绝对可以搞定 但是优先试第一种
parameters[3].Value = job.Time.ToString();
改成
parameters[3].Value = job.Time;
有问题的话就试第二种
String sql = "update job set name=@name,request=@request,time=@time where id=@id";
改成
String sql = "update job set name=@name,request=@request,time=#"+job.Time.ToString()+"# where id=@id";
第二种绝对可以搞定 但是优先试第一种
#19
不是顺序的问题吧,因为取值的时候都是根据名称赋值的,和创建参数数组的顺序没有多大关系吧!
#20
我刚开始的时候就是用的第一种方法,但是一直报错,刚才用你的第二种方法试过了,还是不行!
#21
ACCESS是桌面数据库,
...
...
#22
...
#23
这样就不能修改时间字段了吗?
#24
这个试过了吗?
#25
建议用参数的形式操作.
另外,用参数操作时参数的书写顺序必需和SQL语句中的字段顺序一样,否则不报错但无结果.
另外日期形的要用#包围
另外,用参数操作时参数的书写顺序必需和SQL语句中的字段顺序一样,否则不报错但无结果.
另外日期形的要用#包围
#26
那你用断点看一下
job.Time.ToString() 值是多少
顺便把sql 的内容贴上来看一下
job.Time.ToString() 值是多少
顺便把sql 的内容贴上来看一下
#27
<appSettings>
<add key="indexPageExTime" value="0.1"/>
<add key="conAccessString" value="~/school.mdb;"/>
</appSettings>
#region 数据库链接
protected static string connectionString = "provider = microsoft.jet.oledb.4.0;data source =" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationSettings.AppSettings["conAccessString"]);
#endregion
#28
恩,学习!!!!!
#29
ACCESS数据库的不要用参数和
不能用储存过程
不能用储存过程
#31
谢谢大家 问题解决了 好像就是参数顺序 不正确的原因
#32
那才给我那么一点儿分????
#1
OleDbParameter parameter = new OleDbParameter();
parameter.OleDbType = OleDbType.DBDate;
parameter.Value = DateTime.Now;
cmd.Parameters.Add(parameter);
//这样传参数看看
或者你先在程序里面把时间格式转换成string,然后插入。不过不知道拼sql语句要不要转换
#2
其它字段能否修改?如果能,可能你的日期格式错误,
#3
我是这样写的 传的是一个参数数组 不过原理和你的一样
OledbParameter[] parameters={
new OledbParameter("paraName",paraType),
.......
};
//指定参数的值
parameters[index]=value;
然后调用AccessHelper类中的方法
只要是带上修改时间字段的都抛异常 只要不修改时间字段 就可以修改成功
#4
2010-5-7这个格式就行么
#5
access中时间是要这么写的
update table set time=#2007-07-08 12:10:00#
他是用##隔开的 你看一下
update table set time=#2007-07-08 12:10:00#
他是用##隔开的 你看一下
#6
现在格式不要紧 只要可以修改就行
不过最好是能精确到时 分
但是只要能够修改就行
现在就是修改不了时间字段
#7
在C#里面DateTime.Now和access里面DateTime.Now格式不一样!
我以前做过这,只要把格式转换一下就可以了!time
2010-4-7 11:30:03
我以前做过这,只要把格式转换一下就可以了!time
2010-4-7 11:30:03
#8
是不是拼接sql语句的时候 在时间变量的前后加上'#'号啊?
#9
但是我执行 你上面那条sql语句的时候 提示有语法错误啊?
#10
怎样转换,转换成什么格式啊?
#11
我在ACCESS2000中是这样使用更新数据库的,现在正在使用中,见我的页面:
http://nz.oicp.net:81
protected void Button3_Click(object sender, EventArgs e)
{//修改更新
string i = Request.QueryString["ID"].ToString();//上页传来的ID
int j = Convert.ToInt32(i);
string tabel_name = Session["tabel_name"].ToString();//上页的Session的数据表名
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\studentinfo.mdb");
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select * from "+tabel_name+" where id =" + j, conn);
OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "basic_info");
//...
ds.Tables["basic_info"].Rows[0]["diploma_date"] = TextBox17.Text.ToString();//日期格式:2010-05-08
//...
da.Update(ds, "basic_info"); //更新到数据库
conn.Close();
}
protected void Button3_Click(object sender, EventArgs e)
{//修改更新
string i = Request.QueryString["ID"].ToString();//上页传来的ID
int j = Convert.ToInt32(i);
string tabel_name = Session["tabel_name"].ToString();//上页的Session的数据表名
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\studentinfo.mdb");
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select * from "+tabel_name+" where id =" + j, conn);
OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "basic_info");
//...
ds.Tables["basic_info"].Rows[0]["diploma_date"] = TextBox17.Text.ToString();//日期格式:2010-05-08
//...
da.Update(ds, "basic_info"); //更新到数据库
conn.Close();
}
#12
ds.Tables["basic_info"].Rows[0]["diploma_date"] = TextBox17.Text.ToString();//日期格式:2010-05-08
你数据库里面设定的时间字段是字符串类型的吧?但是我设置的是DateTime类型的。
你数据库里面设定的时间字段是字符串类型的吧?但是我设置的是DateTime类型的。
#13
我设置的
也是DateTime类型
#14
Carryontilltomorrow 把你的代码贴出来 看了帮你改一下
#15
后台点击保存时间
job.Name = txtName.Text;
job.Request = txtContent.Value;
if (CheckBox1.Checked)//选上刷新时间的复选框
{
job.Time = DateTime.Now;
}
result = JobBLL.Update(job);
if (result > 0)
{
Common.showResult(this, "已经成功修改一条招聘信息", "AddJob.aspx");
}
else
{
Common.showResult(this, "由于某种原因,操作失败,请稍后再试!", "AddJob.aspx");
}
//BLL层中的方法
public static int Update(Job job)
{
return JobDAL.Update(job);
}
DAL
public static int Update(Job job)
{
int result = 0;
OleDbParameter[] parameters ={
new OleDbParameter("@name",OleDbType.VarChar),
new OleDbParameter("@request",OleDbType.BSTR),
new OleDbParameter("@id",OleDbType.Integer),
new OleDbParameter("@time",OleDbType.DBDate)
};
parameters[0].Value = job.Name;
parameters[1].Value = job.Request;
parameters[2].Value = job.Id;
parameters[3].Value = job.Time.ToString();
String sql = "update job set name=@name,request=@request,time=@time where id=@id";
result = AccessHelper.ExeSqlReI(sql, parameters);
return result;
}
job.Name = txtName.Text;
job.Request = txtContent.Value;
if (CheckBox1.Checked)//选上刷新时间的复选框
{
job.Time = DateTime.Now;
}
result = JobBLL.Update(job);
if (result > 0)
{
Common.showResult(this, "已经成功修改一条招聘信息", "AddJob.aspx");
}
else
{
Common.showResult(this, "由于某种原因,操作失败,请稍后再试!", "AddJob.aspx");
}
//BLL层中的方法
public static int Update(Job job)
{
return JobDAL.Update(job);
}
DAL
public static int Update(Job job)
{
int result = 0;
OleDbParameter[] parameters ={
new OleDbParameter("@name",OleDbType.VarChar),
new OleDbParameter("@request",OleDbType.BSTR),
new OleDbParameter("@id",OleDbType.Integer),
new OleDbParameter("@time",OleDbType.DBDate)
};
parameters[0].Value = job.Name;
parameters[1].Value = job.Request;
parameters[2].Value = job.Id;
parameters[3].Value = job.Time.ToString();
String sql = "update job set name=@name,request=@request,time=@time where id=@id";
result = AccessHelper.ExeSqlReI(sql, parameters);
return result;
}
#16
你把参数顺序弄好了,绝对可以成功
#17
OleDbParameter[] parameters ={
new OleDbParameter("@name",OleDbType.VarChar),
new OleDbParameter("@request",OleDbType.BSTR),
new OleDbParameter("@time",OleDbType.DBDate),
new OleDbParameter("@id",OleDbType.Integer)
};
new OleDbParameter("@name",OleDbType.VarChar),
new OleDbParameter("@request",OleDbType.BSTR),
new OleDbParameter("@time",OleDbType.DBDate),
new OleDbParameter("@id",OleDbType.Integer)
};
#18
先试第一种
parameters[3].Value = job.Time.ToString();
改成
parameters[3].Value = job.Time;
有问题的话就试第二种
String sql = "update job set name=@name,request=@request,time=@time where id=@id";
改成
String sql = "update job set name=@name,request=@request,time=#"+job.Time.ToString()+"# where id=@id";
第二种绝对可以搞定 但是优先试第一种
parameters[3].Value = job.Time.ToString();
改成
parameters[3].Value = job.Time;
有问题的话就试第二种
String sql = "update job set name=@name,request=@request,time=@time where id=@id";
改成
String sql = "update job set name=@name,request=@request,time=#"+job.Time.ToString()+"# where id=@id";
第二种绝对可以搞定 但是优先试第一种
#19
不是顺序的问题吧,因为取值的时候都是根据名称赋值的,和创建参数数组的顺序没有多大关系吧!
#20
我刚开始的时候就是用的第一种方法,但是一直报错,刚才用你的第二种方法试过了,还是不行!
#21
ACCESS是桌面数据库,
...
...
#22
...
#23
这样就不能修改时间字段了吗?
#24
这个试过了吗?
#25
建议用参数的形式操作.
另外,用参数操作时参数的书写顺序必需和SQL语句中的字段顺序一样,否则不报错但无结果.
另外日期形的要用#包围
另外,用参数操作时参数的书写顺序必需和SQL语句中的字段顺序一样,否则不报错但无结果.
另外日期形的要用#包围
#26
那你用断点看一下
job.Time.ToString() 值是多少
顺便把sql 的内容贴上来看一下
job.Time.ToString() 值是多少
顺便把sql 的内容贴上来看一下
#27
<appSettings>
<add key="indexPageExTime" value="0.1"/>
<add key="conAccessString" value="~/school.mdb;"/>
</appSettings>
#region 数据库链接
protected static string connectionString = "provider = microsoft.jet.oledb.4.0;data source =" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationSettings.AppSettings["conAccessString"]);
#endregion
#28
恩,学习!!!!!
#29
ACCESS数据库的不要用参数和
不能用储存过程
不能用储存过程
#30
我用的ACCESS2000是可以修改日期时间字段值的,你可以进入我站操作操作:
http://nz.oicp.net:81
#31
谢谢大家 问题解决了 好像就是参数顺序 不正确的原因
#32
那才给我那么一点儿分????