2011-12-24 87 views
2

我試圖做一個簡單的測試程序,它可以打開MDB文件和做3個基本的東西 的MDB有3場,個個都是文本:插入和更新數據,MDB

ID 
INFO 
TEXT 
  • 表示acording到ID數據=根據ID得到這個工作
  • 改變數據=問題
  • 添加新數據=問題

顯示數據與此代碼的工作:

con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\\mdb\\testmdb.mdb"); 
cmd = new OleDbCommand(); 
cmd.Connection = con; 
cmd.CommandText = "select Info, text from Table1 where ID = '" + int.Parse(textBox1.Text) + "' "; 
con.Open(); // open the connection 
OleDbDataReader dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
    textBox2.Text = dr["Info"].ToString(); 
    textBox3.Text = dr["text"].ToString(); 
} 
con.Close(); 

如何在MDB和我已經有更新的數據插入新的數據?

回答

1

嘗試此插入:

con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\\mdb\\testmdb.mdb"); 
cmd = new OleDbCommand(); 
cmd.Connection = con; 
cmd.CommandText = "insert (ID, Info, text) into Table1 values (@ID, @Info, @text);"; 
cmd.Parameters.AddWithValue("@ID", textBox1.Text); 
cmd.Parameters.AddWithValue("@Info", textBox2.Text); 
cmd.Parameters.AddWithValue("@text", textBox3.Text); 
con.Open(); // open the connection 
//OleDbDataReader dr = cmd.ExecuteNonQuery(); 
cmd.ExecuteNonQuery(); 
con.Close(); 

嘗試此更新:

con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\\mdb\\testmdb.mdb"); 
cmd = new OleDbCommand(); 
cmd.Connection = con; 
cmd.CommandText = "update Table1 set [Info] = @Info, [text] = @text where ID = @ID;"; 
cmd.Parameters.AddWithValue("@ID", textBox1.Text); 
cmd.Parameters.AddWithValue("@Info", textBox2.Text); 
cmd.Parameters.AddWithValue("@text", textBox3.Text); 
con.Open(); // open the connection 
//OleDbDataReader dr = cmd.ExecuteNonQuery(); 
cmd.ExecuteNonQuery(); 
con.Close(); 

更多操作,檢查的this網站左側面板中。

+0

它可能考慮使用最佳實踐使用'{}'括號現在。此外,您不需要這些數據讀取器,只需調用'cmd.ExecuteNonQuery();' – LarsTech 2011-12-24 17:00:05

+0

錯誤不能將類型'int'隱式轉換爲'System.Data.OleDb.OleDbDataReader' – Iakovl 2011-12-24 17:09:33

+0

ExecuteNonQuery的返回值是一個int,將這些'OleDbDataReader dr'行轉換爲'int numAffected',並且它應該可以正常工作 – Petesh 2011-12-24 17:31:58

0

工作代碼

using System; 
using ADOX; 
using System.Data.OleDb; 
using System.Data; 
using System.IO; 

namespace ConsoleApplication4 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     CreateMdb("toster_ru.mdb"); 
     string fileNameWithPath = Environment.CurrentDirectory + "\\toster_ru.mdb"; 

     CreateTableInToMdb(fileNameWithPath); 
     InsertToMdb(fileNameWithPath); 
     UpdateToMdb(fileNameWithPath); 

     var myDataTable = new DataTable(); 
     using (var conection = new OleDbConnection("Provider = Microsoft.JET.OLEDB.4.0; Data Source = " + fileNameWithPath)) 
     { 
      conection.Open(); 
      var query = "Select info From my_table"; 
      var adapter = new OleDbDataAdapter(query, conection); 
      adapter.Fill(myDataTable); 
      Console.WriteLine(myDataTable.Rows[0][0].ToString()); //output: toster2.ru 
      Console.ReadKey(); 
     } 
    } 

    static void CreateMdb(string fileNameWithPath) 
    { 
     if (File.Exists(fileNameWithPath)) 
      return; 

     Catalog cat = new Catalog(); 
     string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5"; 
     cat.Create(String.Format(connstr, fileNameWithPath)); 
     cat = null; 
    } 

    static void InsertToMdb(string fileNameWithPath) 
    { 
     var con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileNameWithPath); 
     var cmd = new OleDbCommand(); 
     cmd.Connection = con; 
     cmd.CommandText = "insert into my_table (ID, [Info], [text]) values (@ID, @Info, @text);"; 
     cmd.Parameters.AddWithValue("@ID", 1); 
     cmd.Parameters.AddWithValue("@Info", "toster.ru"); 
     cmd.Parameters.AddWithValue("@text", "blabla"); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 

    static void UpdateToMdb(string fileNameWithPath) 
    { 
     var con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileNameWithPath); 
     var cmd = new OleDbCommand(); 
     cmd.Connection = con; 
     cmd.CommandText = "UPDATE my_table SET [Info] = ?, [text] = ? WHERE ID = ?;"; 
     cmd.Parameters.AddWithValue("@p1", OleDbType.VarChar).Value = "toster2.ru"; 
     cmd.Parameters.AddWithValue("@p2", OleDbType.VarChar).Value = "blabla2"; 
     cmd.Parameters.AddWithValue("@p3", OleDbType.VarNumeric).Value = 1; 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 

    static void CreateTableInToMdb(string fileNameWithPath) 
    { 
     try 
     { 
      OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + fileNameWithPath); 
      myConnection.Open(); 
      OleDbCommand myCommand = new OleDbCommand(); 
      myCommand.Connection = myConnection; 
      myCommand.CommandText = "CREATE TABLE my_table([ID] NUMBER, [Info] TEXT, [text] TEXT)"; 
      myCommand.ExecuteNonQuery(); 
      myCommand.Connection.Close(); 
     } 
     catch { } 
    } 
} 
}