C # изменить тип данных mdb, поданных в памятку и сохранить его - PullRequest
1 голос
/ 25 января 2011

Я хотел бы изменить тип данных в моей БД с «Текст» на «Заметки».во-первых, я не нашел тип данных "Memo" в c #.второе: я получил следующий код для выполнения команды в БД:

    public void SQLCommand(String strSQL)
    {
        OleDbConnection objConnection = null;
        OleDbCommand objCmd = null;
        String strConnection;
        strConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + "\\tasks.mdb";
        objConnection = new OleDbConnection(strConnection);
        objConnection.ConnectionString = strConnection;
        objConnection.Open();
        objCmd = new OleDbCommand(strSQL, objConnection);
        objCmd.ExecuteNonQuery();
        objConnection.Close();
        UpdateListView();
    }

как я могу изменить тип данных 3-го столбца и сохранить его?Я могу изменить тип данных, когда form_load с помощью этой функции:

    public void tst()
    {
        conn.Open();
        DataSet ds = new DataSet();
        OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * from Tasks", conn);
        adapter.Fill(ds);
        DataTable dt = ds.Tables[0];
        dt.Columns[3].DataType = System.Type.GetType("System.String");
        conn.Close();
    }

, но с помощью этой функции он меняется на тип данных на string>, и я хочу memo.Кроме того, эта функция бесполезна, так как мне нужно запускать ее каждый раз, и если я постоянно изменяю ее на памятку, мне просто нужно сделать немного, если в начале.

1 Ответ

3 голосов
/ 25 января 2011
  1. String в C # является эквивалентом Text и Memo в том смысле, что он поддерживает тексты любой длины.

  2. Если я правильно понимаю вопрос, я думаю, вы неправильно понимаете, что вы на самом деле делаете в своем коде. Когда вы устанавливаете DataType столбца, вы никоим образом не изменяете базу данных, вы просто меняете тип данных столбца в экземпляре DataTable, который вы создали.

Если вы действительно хотите изменить структуру базы данных, возможно, лучше всего сделать это вручную в Access, поскольку я не уверен, действительно ли это поддерживается в ADO.Net (полагаю, вы могли бы это сделать это используя ALTER заявления). В противном случае вы могли бы сделать это, используя DAO, который раньше был способом доступа / Jet для подобных вещей, но это давно устарело, поэтому может не сработать в .Net.

...