Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Создание пустой таблицы со структурой таблицы-шабл


Автор: Vova14 10.3.2011, 23:29
В базе SQL Server Compact имеется таблица без записей - что-то вроде шаблона.
Как создавать таблицы, используя структуру этого шаблона .

Автор: puZzo 11.3.2011, 09:55
http://www.cyberforum.ru/csharp-net/thread185033.html

может чем поможет

з.ы.: и кстати обязательно структуру нужно получать программно? может достаточно будет сделать один раз запрос, на создание твоей таблицы? Если конечно структура не будет меняться)

Автор: Vova14 12.3.2011, 11:11
Можно добавить таблицу в базу так
Код

  public static bool CreateSqlCeTable(String conStr, String fies)
    {
      SqlCeConnection conn = new SqlCeConnection(conStr);
      try
      {
          //пробуем подключится
        conn.Open();
      }
      catch (SqlException se)
      {
        Console.WriteLine("Ошибка подключения при создании таблицы:{0}",se.Message);
        return false;
      }
      SqlCeCommand cmdCreateTable = new SqlCeCommand("CREATE TABLE " + fies, conn);
      
      //посылаем запрос
      try
      {
        cmdCreateTable.ExecuteNonQuery();
      }
      catch(SqlException se) 
      {
        Console.WriteLine("Ошибка при создании таблицы:{0}",se.Message);
        return false;
      }
      //закрвываем соединение
      conn.Close();
      conn.Dispose();
      return true;
    }

Нужен похожий код для создания пустых таблиц со структорой таблицы, имеющейся в базе
Та таблица-шаблон создаётся визуально - так удобнее и создать и потом изменять

Автор: puZzo 12.3.2011, 18:55
если делаешь визуально, то в процессе работы программы меняться шаблон не будет? или всеже будет? сгенерируй в редакторе таблиц твоем, SQL запрос на создание таблицы, вроде это у всех есть, и этот запрос и вставляй в код выше, или сохраняй запрос в файле, и подгружай из него, если все таки шаблон будет меняться часто..

Автор: jonie 13.3.2011, 11:29
хз как в SQL CE, но в взросолй версии прокатит такое:
Код

SELECT TOP 0 * INTO newTable FROM realTable

создаст табличку...

Автор: Vova14 13.3.2011, 13:57
В SQL CE такое не катит. Здесь делаю так

Код

SqlCeCommand command = new SqlCeCommand("SELECT * FROM realTable", conn);
SqlCeDataReader dr = command.ExecuteReader();
DataTable t = dr.GetSchemaTable();


А потом исходя из схемы создаю строку CREATE TABLE

Автор: jonie 13.3.2011, 17:40
Vova14,тогда выбирайте не все данные запросом.. поставьте WHERE 1=0

Автор: Vova14 13.3.2011, 19:34
WHERE 1=0 уже пробовал
Код

SELECT TOP 0 * INTO newTable FROM realTabl WHERE 1=0

всё равно выдаёт ошибку начиная с         0 * INTO newTable FROM realTabl WHERE 1=0 
Похоже, что всё это особенности SQL Server Compact

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)