社区
C#
帖子详情
请教微软专家.NET写Access数据库的问题
nakrul
2002-10-23 10:32:30
我用C#向access中的一个表插入数据,当表里有八个字段时,使用ExecuteNonQuery执行insert语句,无论如何都要出错(错误信息为:insert into语句语法错误),但我任意的删掉一个字段后,就插入成功了。但使用DataAdpter的Update就没问题,请教这是怎么回事?
...全文
30
9
打赏
收藏
请教微软专家.NET写Access数据库的问题
我用C#向access中的一个表插入数据,当表里有八个字段时,使用ExecuteNonQuery执行insert语句,无论如何都要出错(错误信息为:insert into语句语法错误),但我任意的删掉一个字段后,就插入成功了。但使用DataAdpter的Update就没问题,请教这是怎么回事?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
combread
2002-10-23
打赏
举报
回复
你去看看自己的数据库,插入null字段的设计属性,“允许空字符串”和“必填字段”。
nakrul
2002-10-23
打赏
举报
回复
数据表如下:
create table account_2
(serial_id char(8) not null,
goods_id char(4) not null,
haoshu char(20),
inpute_date date,
goods_num int,
goods_price double,
total_price double,
note char(60))
nakrul
2002-10-23
打赏
举报
回复
长度没有越界,处了主键外,所有的字段都插入null
nakrul
2002-10-23
打赏
举报
回复
可以,不过,代码很长,我的想法是作个类似的东西,代替DataAdapter的update。
//插入更新
for(int j=0; j<ds_update.Tables[i].Rows.Count; j++)
{
string strState = ds_update.Tables[i].Rows[j].RowState.ToString();
//该行为待新增的记录
if(strState == "Added")
{
//生成insert语句
string m_SQL = "INSERT INTO " + strTableName + " (";
//计算一个DataTable中有几个字段
for(int t=0; t<ds_update.Tables[i].Columns.Count; t++)
{
string strColumn_name = ds_update.Tables[i].Columns[t].ColumnName;
m_SQL += " " + strColumn_name;
if(t<(ds_update.Tables[i].Columns.Count-1))
m_SQL += ",";
}
m_SQL += " ) VALUES (";
for(int t=0; t<ds_update.Tables[i].Columns.Count; t++)
{
string strColumn = "";
string strDataType = ds_update.Tables[i].Columns[t].DataType.ToString();
//字段类型为字符型
if(strDataType == "System.String")
{
strColumn = ds_update.Tables[i].Rows[j][t].ToString();
if(strColumn == "")
m_SQL += " null";
else
m_SQL += " '" + strColumn + "'";
}
//字段类型为整型
else if((strDataType == "System.Int16") || (strDataType == "System.Int32") ||
(strDataType == "System.Double") || (strDataType == "System.Decimal"))
{
strColumn = ds_update.Tables[i].Rows[j][t].ToString();
if(strColumn == "")
m_SQL += " null";
else
m_SQL += " " + strColumn;
}
////字段类型为日期型
else if(strDataType == "System.DateTime")
{
//faint,搞了这么久,日期的问题还未解决
strColumn = ds_update.Tables[i].Rows[j][t].ToString();
if(strColumn == "")
m_SQL += " null";
else
m_SQL += " '" + strColumn + "'";
}
if(t<(ds_update.Tables[i].Columns.Count-1))
m_SQL += ",";
}
m_SQL += " )";
//开始执行insert语句
Comm.CommandText = m_SQL;
Comm.Connection = Conn;
Comm.Transaction = idbtrans;
try
{
Comm.ExecuteNonQuery();
}
catch(Exception exp)
{
string strErr = exp.Message;
idbtrans.Rollback();
if(Conn.State.ToString() == "Open")
Conn.Close();
return strErr;
}
//更新current row的rowstate状态
ds_update.Tables[i].Rows[j].AcceptChanges();
theday112
2002-10-23
打赏
举报
回复
以前我也遇到过,检查一下你的数据类型,长度是否符合要求!
TheAres
2002-10-23
打赏
举报
回复
一个建议:
在调试这方面问题的时候,先把你的insert sql 语句拿到 ACCESS的query中,去执行一下,看看有没有sql方面的错误.
zgh_ms
2002-10-23
打赏
举报
回复
感谢您使用微软产品。
关于这个问题,您能提供源代码么?
希望您能够提供可以重现这个错误的代码和数据库信息,大家一起做深入地分析。
谢谢您的配合。
-微软全球技术中心 -zgh
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
nakrul
2002-10-23
打赏
举报
回复
我试过了,相同的代码在Oracle下运行无任何问题,看来是access这个烂数据库的问题了
nakrul
2002-10-23
打赏
举报
回复
看来没人知道了
asp
.net
知识库
[ADO
.NET
]由
数据库
触发器引发的
问题
为ASP
.NET
封装的SQL
数据库
访问类 DataTable.Select方法的性能
问题
.NET
2.0里使用强类型数据创建多层应用 ADO
.NET
实用经验无保留曝光 有了System.Data.IDataReader,一切皆成数据 ...
.Net
程序员学用Oracle系列(16):访问
数据库
(ODP
.NET
)
1、
.Net
for Oracle 常见
数据库
驱动 1.1、
微软
提供的驱动 1.2、甲骨文提供的驱动 1.3、其它厂商提供的驱动 2、ODP
.NET
常见
问题
分析 2.1、参数化
问题
2.2、方法调用
问题
2.3、取不到存储过程的输出参数值 3、...
MVP带你零基础学习
Access
数据库
《
微软
MVP带你零基础学习
Access
数据库
》是基础课程,适合以下人员学习: 1、对
Access
开发有兴趣的人员 2、初学
Access
,对
Access
数据库
认识并不深的人员 3、有所了解
Access
,但是对知识掌握较差的人员 4、希望系统...
.net
一个ASP
.NET
页面一般都对应一个隐藏类,一般都在ASP
.NET
页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下Codebehind="Tst1.aspx.cs" 表明经编译此页面时使用哪一个代码文件Inherits="T1.Tst1" 表用...
[转]如何在
.Net
Web应用中使用水晶报表
为了得到最好的效果,读者最好需要有一些基础的Asp
.Net
访问
数据库
的知识以及使用VS
.Net
的开发经验。 简介 水晶报表可以由很多的方法得到,其中一个就是使用VS
.Net
来创建,它提供了非常丰富模型以使我们能够在...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章