Member 14924462 Ответов: 1

Oledb excel C# vshost32.exe ошибка


Когда я пытаюсь добавить, я получаю ошибку vshost32.exe перестал работать.

Но когда excel открыт, нет никаких проблем

Я работаю над файлом excel общим в сети


1. Если я поделюсь рабочей книгой, то получу ошибку

2. Не могу добавить данные если Excel закрыт

Что я уже пробовал:

OleDbConnection baglanti12 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\DESKTOP-G9FITLN\paylasim\" + label2.Text.ToString() + ";Extended Properties='Excel 12.0 Xml;HDR=YES;'");
                    baglanti12.Open();
                    OleDbCommand komut = new OleDbCommand("insert into [Sheet1$B" + (dataGridView1.CurrentCell.RowIndex + 1).ToString() + ":B" + (dataGridView1.CurrentCell.RowIndex + 1).ToString() + "]  values (@p1)", baglanti12);
                    komut.Parameters.AddWithValue("@p1", textBox2.Text);
                    komut.ExecuteNonQuery();
                    baglanti12.Close();

                    OleDbConnection baglanti13 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\DESKTOP-G9FITLN\paylasim\" + label2.Text.ToString() + ";Extended Properties='Excel 12.0 Xml;HDR=YES;'");
                    baglanti13.Open();
                    OleDbDataAdapter da = new OleDbDataAdapter("Select * From [Sheet1$] where [Bilgi]='" + label1.Text + "'", baglanti13);
                    dt = new DataTable();
                    ds = new DataSet();
                    da.Fill(dt);
                    dataGridView1.DataSource = dt;
                    baglanti13.Close();

PIEBALDconsult

Не знаю, но у тебя все равно есть более серьезные проблемы.
Вам нужно научиться использовать параметры с OleDb-то есть по позиции, а не по имени.

Member 14924462

Но когда excel открыт, нет никаких проблем

Member 14924462

Если я поделюсь книгой я получу ошибку

1 Ответов

Рейтинг:
1

Sandeep Mewara

Во-первых, вам нужно узнать о параметризованный запрос[^]. Ваш текущий код открыт для SQL-инъекция[^] и таким образом он может уничтожить вашу базу данных.

Во-вторых, похоже, что вы не используете никакой сборки взаимодействия для работы с excel. Если он работает с открытым, а не с закрытым, это может означать, что процесс занимает много времени. Если процесс занят в течение длительного времени, W7 выключит его, даже если он все еще продолжается. Итак, попробуйте выполнить всю операцию в потоке backgroundworker, и это не должно спасти пользовательский интерфейс.

Отдых, пример приложения здесь, чтобы дать быструю попытку и посмотреть, если что-то отличается: Чтение и запись файла Excel с OLEDB в C# (без взаимодействия)[^]

Хотя это может быть и не нужно (но попробуйте, если прежде всего не удастся), ошибка vshost32 иногда возникает, когда некоторые API-интерфейсы попадают под влияние включенного процесса размещения VS. Выключите его и посмотрите: Как отключить процесс размещения - Visual Studio 2015 | Microsoft Docs[^]

Новые подробности: "vshost32.exe перестал работать" - Узнай по инсайту...[^]