这个EXCEL插入语句有什么错?

houyizhinv 2009-12-16 05:37:25



a[0] = "333333";
a[1] = "22";
a[2] = "22";
a[3] = "用户";
a[4] = "ct@126.com";
write_to_usemsg(a);

public void write_to_usemsg(string[] usemsg)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\AQXT.xls;Extended Properties='Excel 8.0;'";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;

string tmpString, sqlStr3;

usemsg[0] = '\'' + usemsg[0] + '\'';
usemsg[1] = '\'' + usemsg[1] + '\'';
usemsg[2] = '\'' + usemsg[2] + '\'';
usemsg[3] = '\'' + usemsg[3] + '\'';
usemsg[4] = '\'' + usemsg[4] + '\'';
tmpString = @"insert into [user_msg$] values({0},{1},{2},{3},{4})";
sqlStr3 = string.Format(tmpString, usemsg[0], usemsg[1], usemsg[2], usemsg[3], usemsg[4]);
cmd.CommandText = sqlStr3;
cmd.ExecuteNonQuery();

}


追踪得到的SQL语句是:

insert into [user_msg$] values('333333','22','22','用户','ct@126.com')

在数据库里面建表测试执行是OK的
...全文
95 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
特别 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 houyizhinv 的回复:]
至于表结构 用EXCEL的表格,应该都是字符串型的吧
[/Quote]
那不是全为字符串型的
你先读取一下该表的架构,看看每列为什么类型,
不就容易解决问题了吗
houyizhinv 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sdfkfkd 的回复:]
a[0] = "333333";
        a[1] = "22";
        a[2] = "22";
如果每条记录的这三个字段都是数字组成的话,可能OLEDB认为是int型了
改成
SQL codeinsertinto[user_msg$]values(333333,22,22,'用户','ct@126.com')
试试,另外,
可以读取一下该表的架构,看看每个字段是什么类型

[/Quote]
我用全字符的数据试了一下,效果是一样的
还是OLEB标准表达式中数据类型不匹配
至于表结构 用EXCEL的表格,应该都是字符串型的吧
特别 2009-12-16
  • 打赏
  • 举报
回复
a[0] = "333333";
a[1] = "22";
a[2] = "22";
如果每条记录的这三个字段都是数字组成的话,可能OLEDB认为是int型了
改成

insert into [user_msg$] values(333333,22,22,'用户','ct@126.com')

试试,另外,
可以读取一下该表的架构,看看每个字段是什么类型
houyizhinv 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaoyuzi 的回复:]
你有在那个excel文件中建立了表么?
类似:
string strCmd = "CREATE TABLE tablename (Id int, Province nvarchar, 。。。 )";
            this.Cmd.CommandText = strCmd;
            this.Cmd.ExecuteNonQuery();
如果建了,检查类型是否一致
[/Quote]
这点小错误还用说么 - -~
D:\AQXT.xls
第一个工作薄是user_msg
xiaoyuzi 2009-12-16
  • 打赏
  • 举报
回复
你有在那个excel文件中建立了表么?
类似:
string strCmd = "CREATE TABLE tablename (Id int, Province nvarchar, 。。。 )";
this.Cmd.CommandText = strCmd;
this.Cmd.ExecuteNonQuery();
如果建了,检查类型是否一致
houyizhinv 2009-12-16
  • 打赏
  • 举报
回复
报错是 标准表达式中数据类型不匹配。
kaorini 2009-12-16
  • 打赏
  • 举报
回复
没看出来你在哪里执行这SQL语句了
kaorini 2009-12-16
  • 打赏
  • 举报
回复
有啥报错信息吗
silentwins 2009-12-16
  • 打赏
  • 举报
回复
Excel?

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧