добавить прослушиватели onCreate и onUpgrade.
blockquote>var theDb = await openDatabase(path, version: 14, onCreate: _onCreate, onUpgrade: _onUpgrade); void _onCreate(Database db, int version) async { //load your db from assets print("Created tables"); } //Drop and create tables onUpgrade or Alter. FutureOr _onUpgrade(Database db, int oldVersion, int newVersion) { //code your changes to the db like alter table queries, or drop and create. }
Я ничего не могу сказать о IronRuby, но большинство реализаций Python (как IronPython, Jython и PyPy) пытается быть максимально верным для реализации CPython. IronPython быстро становится одним из лучших в этом отношении хотя, и существует большое движение на Планете Python об этом.
Главным, которое поощрит разработчиков писать код, это отличается от того, что они записали бы в CPython, является отсутствие дополнительных модулей C как NumPy (Это - проблема в Jython и PyPy также).
Интересным проектом бдительно следить за является IronClad, который позволит Вам назвать дополнительные модули C из IronPython. Это должно в конечном счете означать, что можно разработать код под CPython, с помощью любых модулей, которые Вы любите, и он будет работать неизмененный на IronPython.
http://www.resolversystems.com/documentation/index.php/Ironclad
Таким образом отвечать на Ваши вопросы:
Должно быть достаточно легко записать приложения IronPython, которые работают над CPython также, но я, вероятно, стремился бы идти наоборот: программы CPython, которые работают над IronPython также. Тот путь, если это не работает затем, это, более вероятно, будет известная ошибка с известным обходным решением.
Преимущество IronPython, и др. существующего, состоит в том, что они обеспечивают альтернативные реализации языка, которые иногда полезны для определения ошибок в CPython. Они также обеспечивают альтернативные методы для развертывания Ваших приложений Python, если по некоторым причинам Вы оказываетесь в ситуации (как Silverlight), где распределение реализации CPython с Вашим приложением не является соответствующим.
Если Вы создаете библиотеку или платформу, люди могут использовать ее на.NET с их кодом.NET. Это довольно прохладно для них, и для Вас!
При разработке приложения при использовании средств.NET с отказом затем, Вы проигрываете "перекрестно-platformity", который является не всегда проблемой.
При обертывании этого использования с внутренним API можно заменить реализации.NET позже чистым Python, перенес C (для CPython), или Java (для Jython) позже.
Согласно странице Mono, IronPython совместим с реализацией Mono времени выполнения .NET, таким образом, исполняемые файлы должны работать и над Windows и над Linux.
IronPython/IronRuby создаются для работы над виртуальной машиной .NET, таким образом, они - как Вы говорите по существу что конкретная платформа.
По-видимому, они совместимы с Python и Ruby, пока Вы не используете ни одной платформы .NET в Ваших программах.
Было бы здорово выполнить Rails/Django под IIS скорее затем решения для типа Apache/полукровки
Вы отвечаете на свой первый вопрос со вторым, если Вы ничего не используете от .NET, только оригинал освобождает обеспеченный реализацией языка, Вы могли интерпретировать свой *.py или *.rb файл с другой реализацией, и это должно работать.
Преимущество состояло бы в том, если Ваш .NET делает покупки, Вы обычно заботитесь об установке правильной платформы на клиентской машине и т.д.... хорошо, если Вы хотите Python или код Ruby, теперь необходимо поддерживать другую "платформу", должен распределить установку, заботиться о проблеме версии и т.д... Таким образом, там 2 преимущества, с помощью питания платформы .NET в другом языке + сохраняют распределение/обслуживание максимально простым.
Будут ли приложения, написанные на IronPython / IronRuby, быть настолько специфичными для среды .NET, что они, по сути, станут специфичными для платформы?
IronRuby в настоящее время поставляется с большей частью базовой стандартной библиотеки ruby, и поддержка драгоценных камней ruby.
Это означает, что он будет поддерживать практически любое собственное приложение ruby, которое не полагается на расширения C.
Обратной стороной является то, что в IronRuby можно будет писать собственные ruby-приложения, которые не полагаются на CLR, и они будут переносимы на MRI.
Независимо от того, решают ли люди создавать или использовать расширения для своих приложений с помощью CLR, это такой же вопрос, как и создавать или использовать расширения C для MRI - одно не более портативно, чем другое.
Существует побочный вопрос : «Поскольку создавать расширения IronRuby на C # намного проще, чем расширения CRuby на C, будут ли люди создавать расширения там, где им следует придерживаться нативного кода Ruby?» , но это полностью субъективно.
В целом, я думаю, что все, что упрощает создание расширений, является большой победой.
Если они не используют какие-либо функции .NET, тогда в чем преимущество IronPython / IronRuby перед их аналогами, не являющимися .NET?
Производительность: IronRuby уже по большей части быстрее, чем MRI 1.8, и недалеко от MRI 1.9, и в будущем ситуация будет только улучшаться. Я думаю, что python похож в этом отношении.
Развертывание: как уже упоминалось, запуск собственного кросс-платформенного приложения rails ruby внутри IIS является привлекательным предложением для некоторых разработчиков на базе Windows, поскольку это позволяет им лучше интегрироваться с существующими серверами / management Infrastructure / etc
Стабильность: хотя MRI 1.9 намного лучше, чем было 1.8, я не думаю, что кто-то может не согласиться с тем, что у CLR гораздо лучший сборщик мусора и базовая среда выполнения, чем у C ruby.