2
我有一個包含5列(歌曲,藝術家,專輯,流派,時間)的數據表,該表允許我輸入儘可能多的行,因爲我想創建一個播放列表的音樂,當用戶認爲合適時,他們可以點擊按鈕導出數據訪問。我的訪問數據庫有一個名爲「播放列表」的表,其中有5列與數據表相同。當試圖傳輸數據時,我不斷收到Insert INTO語句的異常錯誤,我不知道爲什麼,因爲我正在使用commandBuilder。我附上了我的課程和方法,即執行此操作。將數據從DataTable傳輸到Access數據庫時插入INTO錯誤
請指教!
public void ExportPlaylistToAccess(DataTable playlist)
{
// open connection to the database pathed to
String connection = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
@"Data source= D:\CIS 465\Final Project\VirtualiPod\iTunesPlaylistDatabase.accdb";
using (OleDbConnection con = new OleDbConnection(connection))
{
var adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand("SELECT * from [Playlist]", con);
var cbr = new OleDbCommandBuilder(adapter);
cbr.GetDeleteCommand();
cbr.GetInsertCommand();
cbr.GetUpdateCommand();
try
{
con.Open();
adapter.Update(playlist);
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message, "Database Error");
}
catch (Exception x)
{
MessageBox.Show(x.Message, "Exception Error");
}
}
dataTable的創作
private void createPlaylist_Click(object sender, EventArgs e)
{
if (playlist.Rows.Count == 0)
{
playlist.Columns.Add("Song");
playlist.Columns.Add("Artist");
playlist.Columns.Add("Album");
playlist.Columns.Add("Genre");
playlist.Columns.Add("Time");
dataGridView1.DataSource = playlist;
}
else if (playlist.Rows.Count > 0)
{
MessageBox.Show("Please clear your current playlist to create a new one.");
}
}
// adds song to playlist for user upon click
private void addToPlaylist_Click(object sender, EventArgs e)
{
IITTrackCollection tracks = app.LibraryPlaylist.Tracks;
IITTrack currentTrack = app.CurrentTrack;
DataRow newRow;
newRow = playlist.NewRow();
newRow["Song"] = currentTrack.Name;
newRow["Artist"] = currentTrack.Artist;
newRow["Album"] = currentTrack.Album;
newRow["Genre"] = currentTrack.Genre;
newRow["Time"] = currentTrack.Time;
playlist.Rows.Add(newRow);
dataGridView1.DataSource = playlist;
}
數據表是如何創建的?如果您只是在代碼中構建一個代碼,那麼即使使用相同的名稱,適配器也不知道如何將數據保存到數據庫中。 – Plutonix
我編輯了我的原始文章,我的dataTable正在創建。 – Imperiale
需要從目標表創建DataTable。使用你的SELECT查詢。並使DataAdapter成爲表單/類級別的對象,以便保留INSERT,DELETE和UPDATE的智能。 [示例](http://stackoverflow.com/a/33702351/1070452) – Plutonix