2016年2月1日月曜日

[SQLite]テーブルが作られてなければ作成する

すでにテーブルが存在しているのに作成してしうとエラーになります。
using System;
using System.Data.SQLite;

namespace SampleCode
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (SQLiteConnection con = new SQLiteConnection("Data Source=Test.db"))
                {
                    con.Open();

                    using (SQLiteCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "CREATE TABLE [Sample](" +
                                          "[name]  TEXT NOT NULL" +
                                          ");";
                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

SQL logic error or missing database
table [Sample] already exists

そこで、存在していない場合のみ作成したい時は、
他のDBにもあるように、IF NOT EXISTSをつければよい
cmd.CommandText = "CREATE TABLE IF NOT EXISTS [Sample] (" +
                                      "[name]  TEXT NOT NULL" +
                                      ");";

これなら問題無し。

0 件のコメント:

コメントを投稿