2013-08-15 2 views
2

Я использую следующую функцию, чтобы создать таблицу доступа:Неправильный тип данных OleDB Создать таблицу

 public static void createtable(string path, string tablename, string[] columnnames) 
    { 
     try 
     { 
      string connectionstring = creadteconnectionstring(path); 
      OleDbConnection myConnection = new OleDbConnection(connectionstring); 
      myConnection.Open(); 
      OleDbCommand myCommand = new OleDbCommand(); 
      myCommand.Connection = myConnection; 
      string columnam = "[" + columnnames[0] + "] Text"; 

      for (int i = 1; i < columnnames.Length; i++) 
      { 
        columnam = columnam + ", [" + columnnames[i] + "] Text"; 
      } 

      myCommand.CommandText = "CREATE TABLE [" + tablename + "](" + columnam + ")"; 
      myCommand.ExecuteNonQuery(); 
      myCommand.Connection.Close(); 
      Console.WriteLine("Access table " + tablename + " created."); 
     } 
     catch 
     { 
       Console.WriteLine("Access table " + tablename + " already exists."); 
       return; 


     } 


    } 

Однако если открыть таблицу доступа в MS доступ к типу данных является Memo, а не текст. Другие типы данных link, указанные MS, не работают вообще.

Любые идеи приветствуются? Благодаря!

+1

Я думаю, что вы используете 'VARCHAR (50)' или 'NVARCHAR (50)' вместо 'Text'. Число - это длина. – LarsTech

ответ

3

Тип данных доступа DDL TEXT ведет себя по-разному в зависимости от контекста, в котором выполняется ваш оператор.

Из DAO in Access это создает bar в текстовом поле. Но от ADO в Access, bar будет типом memo.

CREATE TABLE tblFoo (bar TEXT) 

Выполнение этой инструкции из соединения OleDb приводит к такому же результату, как и к ADO в Access.

Если вы хотите бар быть фактическим текстовое поле, включают длину поля < = 255.

CREATE TABLE tblFoo (bar TEXT(255)) 
+0

Спасибо за ваш ответ. Как насчет двойников? Номер: Double [15] – nik

+0

Используйте 'DOUBLE' в вашем DDL для двойного типа. Но я не думаю, что движок Access db принимает аргумент длины для double. Для других типов данных обратитесь к столбцу * DDL (Queries) * по адресу http://allenbrowne.com/ser-49.html. – HansUp

Смежные вопросы