参照設定とかするんじゃねぇ!そして、オブジェクト指向勉強しろ!

今時の開発ベンダーはこんな感じなんですか?
参照設定とかしたら、バージョンとかに依存するの当たり前じゃん。
そうならないようにFramework用意されてるだろうに…orz
金払ってるのに…

俺も大して書けないが、少なくとも、データプロバイダと接続文字列を
変更すれば、汎用的に繋がるだろうが!!

とりあえず、データベースAのテーブルTESTの内容をデータベースBのテーブルTESTに複写するサンプルだw

[c language=”#”]
using System;
using System.Data;
using System.Data.Common;

namespace hoge
{
class Program
{
public static void Main(string[] args)
{
try {
// Db書き込み用
DbProviderFactory prvWrite = DbProviderFactories.GetFactory("System.Data.Odbc");
DbConnection conWrite = prvWrite.CreateConnection();
conWrite.ConnectionString = "DSN=hogehogeB";
DbCommand cmdWrite = prvWrite.CreateCommand();
cmdWrite.Connection = conWrite;
// Db読み込み用
DbProviderFactory prvRead = DbProviderFactories.GetFactory("System.Data.Odbc");
DbConnection conRead = prvRead.CreateConnection();
conRead.ConnectionString = "DSN=hogehogeA";
DbCommand cmdRead = prvRead.CreateCommand();
cmdRead.CommandText = "SELECT A FROM TEST";
cmdRead.Connection = conRead;
cmdRead.Connection.Open();
DbDataReader reader = cmdRead.ExecuteReader();
while (reader.HasRows)
{
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
cmdWrite.CommandText = "INSERT INTO TEST(A) VALUES(‘" + reader.GetString(0)+ "’)";
cmdWrite.Connection.Open();
cmdWrite.ExecuteNonQuery();
conWrite.Close();
}
reader.NextResult();
}
reader.Close();
conRead.Close();
} catch (Exception e) {
Console.WriteLine(e.Message);
}
Console.ReadKey();
}
}
}
[/c]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です