Visual Fox Pro データベースへのデータ接続を作成できます。そこから 2 つのテーブルが必要です。2 つのテーブルを結合して C# でデータを取得するにはどうすればよいですか?
質問する
10824 次
2 に答える
5
まず、Microsoft の Visual FoxPro OleDb provider をダウンロードします。
ダウンロードしてインストールすると、データベース テーブルが配置されている PATH への接続に使用できます。さらに、アプリがテーブルが適切にリンクされている「データベース」を使用している場合は、データベース名も明示的に含めることができます。
using System.Data;
using System.Data.OleDb;
public class YourClass
{
public DataTable GetYourData()
{
DataTable YourResultSet = new DataTable();
OleDbConnection yourConnectionHandler = new OleDbConnection(
"Provider=VFPOLEDB.1;Data Source=C:\\SomePath\\;" );
// if including the full dbc (database container) reference, just tack that on
// OleDbConnection yourConnectionHandler = new OleDbConnection(
// "Provider=VFPOLEDB.1;Data Source=C:\\SomePath\\NameOfYour.dbc;" );
// Open the connection, and if open successfully, you can try to query it
yourConnectionHandler.Open();
if( yourConnectionHandler.State == ConnectionState.Open )
{
OleDbDataAdapter DA = new OleDbDataAdapter();
string mySQL = "select A1.*, B1.* "
+ " from FirstTable A1 "
+ " join SecondTable B1 "
+ " on A1.SomeKey = B1.SomeKey "
+ " where A1.WhateverCondition "; // blah blah...
OleDbCommand MyQuery = new OleDbCommand( mySQL, yourConnectionHandle );
DA.SelectCommand = MyQuery;
DA.Fill( YourResultSet );
yourConnectionHandle.Close();
}
return YourResultSet;
}
}
于 2012-05-22T17:56:38.183 に答える
0
誰かがある程度完全なテストを探している場合。Microsoft から VFPOLEDB ドライバーをダウンロードする必要があります。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
OleDbConnection connection = new OleDbConnection(
"Provider=VFPOLEDB.1;Data Source=F:\\Gutters\\Data\\database.dbc;"
);
connection.Open();
DataTable tables = connection.GetSchema(
System.Data.OleDb.OleDbMetaDataCollectionNames.Tables
);
foreach (System.Data.DataRow rowTables in tables.Rows)
{
Console.Out.WriteLine(rowTables["table_name"].ToString());
DataTable columns = connection.GetSchema(
System.Data.OleDb.OleDbMetaDataCollectionNames.Columns,
new String[] { null, null, rowTables["table_name"].ToString(), null }
);
foreach (System.Data.DataRow rowColumns in columns.Rows)
{
Console.Out.WriteLine(
rowTables["table_name"].ToString() + "." +
rowColumns["column_name"].ToString() + " = " +
rowColumns["data_type"].ToString()
);
}
}
string sql = "select * from customer";
OleDbCommand cmd = new OleDbCommand(sql, connection);
DataTable YourResultSet = new DataTable();
OleDbDataAdapter DA = new OleDbDataAdapter(cmd);
DA.Fill(YourResultSet);
}
}
}
于 2014-03-13T02:49:29.980 に答える