Вставка и обновление данных в MDB - PullRequest
2 голосов
/ 24 декабря 2011

Я пытаюсь создать простую тестовую программу, которая может открывать файлы MDB и выполнять 3 основных действия MDB имеет 3 поля , все они текстовые:

ID
INFO 
TEXT
  • показывает данные в соответствии с 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 и обновить данные, которые у меня уже есть?

Ответы [ 2 ]

1 голос
/ 11 октября 2017

Рабочий код

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 { }
    }
}
}
1 голос
/ 24 декабря 2011

Попробуйте это для вставки:

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();

Для получения дополнительной информации изучите левую панель этого сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...