2011-09-19 70 views
0

我想在我的数据库中插入数据的大小,这里的命令:错误:(从零开始)索引必须大于或等于零且小于参数列表

public static bool InsertUser(string Date, string Day, string HourFrom, string HourTo, int HoursWorked, int Where) 
    { 
    string sql = string.Format("INSERT INTO Tablee (Date, Day, HourFrom, HourTo, HoursWorked, Where)VALUES('{0}','{1}','{2}','{3}','{4}',{5},{6})", Date, Day, HourFrom, HourTo, HoursWorked, Where); 

    return DAL.ExecuteNonQuery(sql) != 0; 
} 

现在我就在我的主题中写的和错误的从那里我建立了我的字符串SQL(的“INSERT INTO ...”)就行了。任何人都有一个想法,我可以如何解决它?

P.S. “{0}”的用途是什么?“{1}”..?我从一个旧项目复制了它,我不记得它为什么在那里以及它做了什么。

+0

避免产生通过串联或格式化字符串的查询。改用参数。 –

+0

您应该使用的SqlParameter – meziantou

+0

不要忘了评论你的代码;它可能有助于避免这个问题(“P.S. Just cause ...”)。 – Bob2Chiv

回答

2

您列出了(0-6)SEVEN指标,只有6个参数。

取出{6}。有

2

这一呼吁:

string.Format("...{0}','{1}','{2}','{3}','{4}',{5},{6}...", parameters...); 

你应该提供7个参数,从0到6,此刻你只提供6:

Date, Day, HourFrom, HourTo, HoursWorked, Where 

,这是错误。

1

创意格式的一点说明您的问题:

VALUES(
'{0}', '{1}', '{2}',  '{3}', '{4}',   {5},  {6})" 
Date, Day,  HourFrom, HourTo, HoursWorked, Where   <<whoops 

要么去掉“6”或给它提供一个值。

相关问题