"找不到表0"

时间:2014-06-10 15:59:33

标签: c# asp.net sql

我有一个按钮,有一个事件onClick(),当我按下按钮它应该添加在两个不同的表(Seuil和Notifier)。这是我的代码

按钮代码:

//Here I instanciate my Connexion class Where I fill the data table and the data set

con.seConnecter();

//Here I verify if the table Seuil has already a similar record 

if (con.verifierExistance("Seuil", "idSerieMateriel", DropDownList1.selectedItem) &&
    con.verifierExistance("Seuil", "idMagasin", DropDownList2.selectedItem))
{

// If exist, do an update

    con.charger("update Seuil set qteMin ='" + txtQteMin.Text + "', qteMax ='" + txtQteMax.Text + "' where idMagasin='"+DropDownList1.selectedItem+"' and idSerieMateriel ='" + DropDownList2.selectedItem + "'", true);
}
else
{
    //if not Insert a new one
    con.charger("insert into Seuil values('DropDownList1.selectedItem', 'DropDownList2.selectedItem', '" + txtQteMin.Text + "', '" + txtQteMax.Text + "')", true);
}

//and in the end, it should add a row in the table 'notifier'
con.charger("insert into Notifier(matricule, qteMin, qteMax, typeMateriel, Serie, idMagasin, date) values('10', '" + txtQteMin.Text + "', '" + txtQteMax.Text + "', '" + cmbType.SelectedItem + "', '" + cmbSerie.SelectedItem + "', '1', '" + DateTime.Today + "')", true);

我的班级联系

public void charger(string query, bool variable)
{
    commande = new SqlCommand(query, connexion);
    dataAdapter = new SqlDataAdapter(commande);
    dataSet = new DataSet();
    dataAdapter.Fill(dataSet);
    if (variable)
    {
        dataTable = dataSet.Tables[0];
    }
}

验证类似代码存在的函数

public Boolean verifierExistance(string tableName, string primaryKey, string textBoxValue)
{
    charger("select * from " + tableName+ " where " + primaryKey+ " ='" + textBoxValue+ "'", true);
    if (dataTable.Rows.Count == 0)
    {
        return false;
    }
    else
    {
        return true;
    }
}

错误

System.IndexOutOfRangeException: Cannot find table 0.

Ligne 61 :         if (variable)
Ligne 62 :         {

Ligne 63 :             dataTable = dataSet.Tables[0];
Ligne 64 :         }
Ligne 65 :     }

2 个答案:

答案 0 :(得分:1)

问题是当您在db中更新或插入行时无法获取数据集,只有在选择数据时才会获得该数据集,

在这种情况下你的

  

DataAdapter.Fill方法(数据集);

in

  

充电器

功能将为空

因此当您尝试访问第0个索引的第1个表

时会抛出错误

答案 1 :(得分:0)

我发现了,我只是不知道为什么我没有注意它,问题是一个小'真',在我的查询中必须用'假'来改变

con.charger("insert into Seuil values('DropDownList1.selectedItem', 'DropDownList2.selectedItem', '" + txtQteMin.Text + "', '" + txtQteMax.Text + "')", FALSE);

非常感谢你的时间,帮助和努力^ _ ^< 3