我有一个按钮,有一个事件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 : }
答案 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