Управление таблицами oledb в сочетании с таблицами foxpro (или другими) - PullRequest
0 голосов
/ 25 марта 2011

Я конвертирую много файлов FOXPRO / FOXWEB в ASP.NET с VB.NET.Базовая база данных останется FOXPRO (пока).

Имеется две таблицы в двух разных базах данных, которые имеют общее поле.Скажем, первая таблица - «table1», а вторая - «table2», а имя общего поля - «cid»

. Скажем, я использовал oledb для извлечения таблицы oledb из table1, называемой «Interestrow», используястрока кода примерно такая:

adapter.Fill(MyDataSet, "interestingrows")

Я хотел бы сказать что-то вроде

sql = "DELETE FROM interestingrows WHERE cid in (SELECT cid FROM TABLE2)"

... за исключением того, что sql cmd отправляется моему адаптеру, который подключается к foxprodb и "интересные строки "- это таблица oledb.

Было бы очень хорошо, хотя и не обязательно, если бы решение сработало, когда мы в конечном итоге решим переключить базовую базу данных на MS SQL (или любой другой вариант, на который решит клиент).

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

Исходя из ваших комментариев, вы можете захотеть создать ВТОРИЧНОЕ «Соединение», которое указывает на общую корневую папку с обеими таблицами ... В противном случае, я ожидаю, что ваш запрос потерпит неудачу, пытаясь получить доступ на один уровень ВВЕРХ, откуда текущее соединение ... Это может вас подвести. Итак, с новым корневым путем подключения ваш запрос может ссылаться на пути и таблицы в одном запросе ... что-то вроде ...

C:\Somewhere\CommonPath\
C:\Somewhere\CommonPath\PrimaryData\
C:\Somewhere\CommonPaht\AlternateData\

и ваше текущее соединение будет

C:\Somewhere\CommonPath\PrimaryData\

создать ВТОРИЧНОЕ соединение, указывающее на

C:\Somewhere\CommonPath\

Тогда ваш запрос может быть что-то вроде

delete from PrimaryData\Table1
   where cid in ( select cid from AlternateData\Table2 );
0 голосов
/ 25 марта 2011

Как насчет выдачи команды SQL непосредственно базовым таблицам?

DELETE FROM Table1 WHERE cid in (SELECT cid FROM Table2)
...