2011-06-29 7 views
0

私は不明ですが、テキストボックスに表示するデータを取得できません。これまでに書いたコードはここにあります。どんな助けも素晴らしいだろう。ボックスには何も入っていませんが、テストをするとメッセージボックスが表示されます。私は何か正しいことをしていないのですか?私は必要に応じてアクセスファイルを提供することができます。しかし、そこにはデータが入っている5つのフィールドしかありません。アクセスDBファイルのデータ

DataSet DataSet1; //use to put data in form 

System.Data.OleDb.OleDbDataAdapter dataadapter; 

private void Breed_Load(object sender, EventArgs e) 
{ 
    dbconnect = new System.Data.OleDb.OleDbConnection();//database connection variable 
    DataSet1 = new DataSet(); //variable to help get info from DB 

    dbconnect.ConnectionString = "PROVIDER= Microsoft.Jet.OLEDB.4.0; Data Source=C:/Pets.mdb"; //location of DB to open 

    dbconnect.Open(); //open command for DB 

    string sql = "SELECT * From tblPets"; //sql string to select all records from the table pets 
    dataadapter = new System.Data.OleDb.OleDbDataAdapter(sql, dbconnect); // pulls the records from sql command 

    MessageBox.Show("Database is Open"); 

    dataadapter.Fill(DataSet1, "Pets"); // used the database to fill in the form. 
    NavRecords(); //calls NavRecords Method 

    dbconnect.Close(); 

    MessageBox.Show("Database is Closed"); 

    dbconnect.Dispose(); 


} 


private void NavRecords() 
{ 
    DataRow DBrow = DataSet1.Tables["Pets"].Rows[0]; 

    //PetNametextBox.Text = DBrow.ItemArray.GetValue(1).ToString(); //puts data in textbox 
    TypeofPettextBox.Text = DBrow.ItemArray.GetValue(1).ToString();//puts data in textbox 
    PetWeighttextBox.Text = DBrow.ItemArray.GetValue(2).ToString();//puts data in textbox 
    ShotsUpdatedtextBox.Text = DBrow.ItemArray.GetValue(3).ToString();//puts data in textbox 
    AdoptabletextBox.Text = DBrow.ItemArray.GetValue(4).ToString();//puts data in textbox 
    BreedtextBox.Text = DBrow.ItemArray.GetValue(5).ToString();//puts data in textbox 
} 
+0

なぜDBrow [0]/DBrow [1] ... – Rahul

+1

ブレイクポイントを設定し、その行に実際にデータが含まれているかどうかを確認してください。 "DBrow [0] .ToString()"の使用を検討してください.DataGridViewの使用を検討する必要があります。 – MrFox

+0

私はブレークポイントを設定し、それに行くものは何も見ませんでした。しかし、私はどこを見るかは100%ではありません。 UGH –

答えて

2

Accessデータベースからデータを取得するのはかなり簡単です。

public static DataTable GetBySQLStatement(string SQLText) 
{ 
    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(); 
    string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Pets.MDB"; 
    System.Data.OleDb.OleDbConnection Conn = new System.Data.OleDb.OleDbConnection(); 

    Conn.ConnectionString = ConnectionString; 
    cmd.CommandType = CommandType.Text; 
    cmd.Connection = Conn; 
    cmd.CommandText = SQLText; 

    DataSet ds; 
    System.Data.OleDb.OleDbDataAdapter da; 
    DataTable Table = null; 

    Conn.Open(); 
    da = new System.Data.OleDb.OleDbDataAdapter(); 
    da.SelectCommand = cmd; 
    ds = new DataSet(); 
    da.Fill(ds); 

    if (ds.Tables.Count > 0) 
     Table = ds.Tables[0]; 
    Conn.Close(); 
    return Table; 
} 

あなたがそうのように、この関数を呼び出します:ここでは一例である

DataTable dt = GetBySQLStatement("SELECT * FROM tblPets"); 

if (dt != null) { 
    // If all goes well, execution should get to this line and 
    // You can pull your data from dt, like dt[0][0] 
} 

のみ「落とし穴」このコードがあるため、32ビットアプリケーションとしてコンパイルする必要がありますされていることを意識することがあります64ビットJetドライバはありません。既定では、Visual Studioは32ビットと64ビットの混在したプログラムとしてコンパイルします。プロジェクト設定のオプションを変更して、32ビットのみを確認します。

+1

64ビットJetドライバはありませんが、64ビット版のACE(MSからダウンロード可能)を使用して、64ビットのコンテキストでMDBファイルにアクセスできます。 –

関連する問題