у меня небольшая проблема с подключением к AS400. Я использую С#. Когда я хочу выполнить оператор SQL для вставки в таблицу, он выдает это сообщение.
SystemInvalidOperationException : This operation cannot be successful because the connection is not allowed at IBM.Data.DB2.iSeries.iDB2Command.verifyConnection(); at IBM.Data.DB2.iSeries.iDB2Command.ExecuteNonQuery();
вот мое определение строки подключения
public static string userID;
public static string passwd;
public static string system;
public string query;
public iDB2Connection conn = new iDB2Connection("DataSource = " + system + ";UserID = " + userID + ";Password = " + passwd + ";DataCompression=true;");
и код, содержащий оператор вставки
public void insert(Programs prog, int nbfiche)
{
//conn.Open();
try
{
string sqlQuery = "INSERT INTO DIIAB.FICDET(MTPRO,MTFICH,MTPGM,MTNSRC,MTLSRC,MTTYP,MTOBJT) VALUES('" + Progiciel + "','" + nbfiche + "','" + prog.program_name +
"','" + prog.source_program + "','" + LIB + "','" + prog.element_type + "','" + prog.program_type + "')";
iDB2Command iDB2Command = conn.CreateCommand();
iDB2Command.CommandText = sqlQuery;
iDB2Command.ExecuteNonQuery();
sqlQuery = "select MTFICH from DIIAB.FICDET where MTFICH='" + nbfiche + "'";
iDB2Command command = conn.CreateCommand();
command.CommandText = sqlQuery;
iDB2DataReader reader = command.ExecuteReader();
while (reader.Read())
{
if (reader[0].ToString().Contains(nbfiche.ToString()))
{
System.Windows.MessageBox.Show("Un programme à été rajouté à la fiche.");
}
}
System.Windows.MessageBox.Show("Les programmes ont été rajouté à la fiche", "Information");
}
catch (Exception e)
{
System.Windows.MessageBox.Show(e.ToString());
}
}
и код, который вызывает метод вставки с параметрами
edit.userID = userID;
edit.passwd = passwd;
edit.system = system;
edit editeur = new edit();
editeur.nbfiche = Convert.ToInt32(daoficnbr.fICNBR.nb_fiche);
editeur.fiche_status = Statuss.Text;
editeur.Progiciel = PRO.Text;
editeur.getpgm(arcad.lib,daoficnbr.fICNBR.nb_fiche);
foreach (Programs p in editeur.content)
{
editeur.insert(p, editeur.nbfiche);
}
Не могли бы мне помочь, пожалуйста, уже 2 дня я застрял на этом
я сделал и проверил это все еще та же ошибка
Вы закомментировали conn.Open() , но он должен быть запущен до того, как команда сможет завершиться. Вы также можете добавить к строке подключения CheckConnectionOnOpen=true;
да, я только что видел это, и все работает нормально. я не могу поверить, что сделал эту ошибку новичка. Спасибо в любом случае
Решение заключалось в том, чтобы убедиться, что строка подключения завершается точкой с запятой и что conn.Open() успешно завершена перед выполнением команд или запросов.
Завершите строку подключения с помощью ; точка с запятой. Кроме того, вам нужно conn.Open() ;