I'm writing simple application gathering information about machine's hardware. I plan to store data in sqlite. Got following code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.IO;
using System.Data;
using System.Data.Linq;
using System.Data.Linq.Mapping;
namespace SQLiteTest
{
public class MyDB : DataContext
{
public Table<Computer> kompy;
public MyDB(string connection) : base(connection) { }
public MyDB(IDbConnection connection) : base(connection) { }
}
[Table]
public class Computer
{
[Column(IsPrimaryKey = true, CanBeNull = false)]
public uint CompId;
[Column]
public uint CompanyId;
[Column]
public string CompName;
}
class Program
{
static void Main(string[] args)
{
string rootPath = Environment.CurrentDirectory;
string dbPath = rootPath + "\\db.sqlite3";
SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder.Add("Data Source", dbPath);
SQLiteConnection sqlcnn = new SQLiteConnection(builder.ConnectionString);
MyDB db = new MyDB(sqlcnn);
db.CreateDatabase();
db.SubmitChanges();
db.Dispose();
}
}
}
Running this program produces exception:
Unhandled Exception: System.Data.SQLite.SQLiteException: SQLite error
near "DATABASE": syntax error
at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQ
LiteStatement previous, UInt32 timeoutMS, String& strRemain)
at System.Data.SQLite.SQLiteCommand.BuildNextCommand()
at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavi
or behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at System.Data.Linq.SqlClient.SqlProvider.ExecuteCommand(String command)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider
.CreateDatabase()
at System.Data.Linq.DataContext.CreateDatabase()
at SQLiteTest.Program.Main(String[] args) in C:\Users\bootch\documents\visual
studio 2010\Projects\SQLiteTest\SQLiteTest\Program.cs:line 47
1) Why this code doesn't work, what am I missing?
2) Is there a way to get text version of underlying sql command to see what's wrong
3) If database doesn't exist I want create database and all tables. I'm lazy so I thought I can use types I created for running queries. Is it possible with System.Data.SQLite?
Thanks in advance, for comments and answers!