Tôi có một vấn đề kết nối với MS Access DB 2007. Mã của tôi:C# Làm thế nào để kết nối với MS Access 2007
private void btnSave_Click(object sender, EventArgs e)
{
OleDbConnection Conn = new OleDbConnection();
try
{
string conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ Directory.GetCurrentDirectory() +"\\dvd_manager.accdb;Persist Security Info=False;";
Conn.ConnectionString = conn;
Conn.Open();
int i = cbbLocatie.SelectedIndex + 65;
char c = (char)i;
string sql = "INSERT INTO DVD (titel, locatie)VALUES(@titel, @locatie)";
OleDbCommand Com = new OleDbCommand();
Com.CommandText = sql;
Com.Connection = Conn;
OleDbParameter Param = new OleDbParameter("@titel", txtTitle.Text);
Com.Parameters.Add(Param);
Param = new OleDbParameter("@locatie", c);
Com.Parameters.Add(Param);
Com.ExecuteNonQuery();
Conn.Close();
MessageBox.Show("Data is opgeslagen " + sql);
}
catch (Exception ex)
{
MessageBox.Show("Fout opgetreden: " + ex.Message);
}
finally
{
Conn.Close();
}
}
Khi tôi chạy mã này, các bảng thông báo xuất hiện. Điều này có nghĩa là dữ liệu của tôi được chèn vào. Nhưng khi tôi mở tập tin accdb không có dữ liệu được chèn vào. Tôi đang làm gì sai?
Thnx
Edit: Giá trị trả về của ExecuteNonQuery() là 1 (để tôi chỉnh sửa bài viết của tôi, vì tôi không thể thêm bất kỳ ý kiến, khi tôi nhấp thêm lời bình, hộp không hiển thị ..)
Chỉnh sửa 2: Tôi đã tạo một lớp có thuộc tính Tiêu đề và Vị trí. Mã số: riêng void btnSave_Click (đối tượng người gửi, EventArgs e) { OleDbConnection Conn = new OleDbConnection();
try
{
string conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ Directory.GetCurrentDirectory() +"\\dvd_manager.accdb;Persist Security Info=False;";
Conn.ConnectionString = conn;
// Create object
Medium M = new Medium();
int i = cbbLocatie.SelectedIndex + 65;
char c = (char)i;
M.Location = c;
M.Title = txtTitle.Text;
Conn.Open();
string sql = "INSERT INTO DVD (titel, locatie)VALUES(@titel, @locatie)";
OleDbCommand Com = new OleDbCommand();
Com.CommandText = sql;
Com.Connection = Conn;
OleDbParameter Param1 = new OleDbParameter("@titel", M.Title);
Com.Parameters.Add(Param1);
OleDbParameter Param2 = new OleDbParameter("@locatie", M.Location);
Com.Parameters.Add(Param2);
int ret = Com.ExecuteNonQuery();
Conn.Close();
MessageBox.Show("Data is opgeslagen " + ret);
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show("Fout opgetreden: " + ex.Message);
}
finally
{
Conn.Close();
}
}
Kể từ khi tôi vẫn không thể nhấn vào nút bình luận thêm, đây là mã mới của tôi với các thông số sql không tên:
// some code
Conn.Open();
string sql = "INSERT INTO DVD (titel, locatie)VALUES(?, ?)";
OleDbCommand Com = new OleDbCommand();
Com.CommandText = sql;
Com.Connection = Conn;
OleDbParameter Param1 = new OleDbParameter("@p1", OleDbType.VarChar, 1);
Param1.Value = M.Title;
Com.Parameters.Add(Param1);
OleDbParameter Param2 = new OleDbParameter("@p2", OleDbType.VarChar, 255);
Param2.Value = M.Location;
Com.Parameters.Add(Param2);
int ret = Com.ExecuteNonQuery();
Conn.Close();
// morde code
Thay đổi tham số không tên có hữu ích không? –
Không, nó không .. – Martijn