控制台应用程序中的SQL Server CE数据库

时间:2013-06-19 15:56:03

标签: c# .net sql console sql-server-ce

是否可以在C#Windows控制台应用程序中使用SQL Server Compact数据库(与基于WebMatrix的网站使用的数据库类型相同)?

我真的对XML(和JSON)文件感到恼火,并不喜欢其他数据库解决方案(因为它只是对一个简单的项目来说有点多)。

我花了几个小时搜索,但我能找到的只是对网站内容的引用(显然不相关)。

1 个答案:

答案 0 :(得分:1)

这是一个简单的控制台应用程序,可以帮助您入门。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.DataAccess.Client;
using System.IO;


namespace execsql
{
    /// <summary>
    /// Simple Sql Executor for use in Batch files.
    /// ExitCode = 0 on success
    /// </summary>
    class Program
    {
        private static string _sql;

        static void Main(string[] args)
        {
            try
            {
                if (CheckArgs(args))
                { 
                    ExecuteSql(args);
                    Console.WriteLine("execsql Ok");
                    Console.WriteLine(_sql);
                }
            }
            catch (Exception ex)
            {
                Environment.ExitCode = 2;
                Console.WriteLine("ExecSql Encountered an Error");
                Console.WriteLine(_sql);
                Console.WriteLine(ex.Message);
            }

        }

        private static void ExecuteSql(string[] args)
        {
            LoadSql(args);

            using (OracleConnection conn = GetConnection(args))
            {
                conn.Open();
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = conn;

                cmd.CommandText = _sql;
                cmd.ExecuteNonQuery(); 
            }
        }

        private static void LoadSql(string[] args)
        { 
            if (args[3].StartsWith("/f=")) // not tested
            {
                StringBuilder script = new StringBuilder();
                string fname = args[3].Split('=')[1];

                string[] strings = File.ReadAllLines(fname);

                foreach(string str in strings)
                    script.Append(str);

                _sql = script.ToString();
            }
            else
            {
                _sql = args[3];
            }
        }

        private static bool CheckArgs(string[] args)
        {
            if (args.Count() == 4)
            {
                return true;
            }
            else
            {
                Console.WriteLine("Invalid Number Of Arguments - Expected 4");
                Console.WriteLine("Use : execsql <dbServer> <dbUser> <dbPassword> <sql>");
                Environment.ExitCode = 1;
                return false;
            }
        }

        private static OracleConnection GetConnection(string[] args)
        { 
            string connectionString = String.Format("Data Source={0};User ID={1};Password={2}", args[0], args[1], args[2]); 
            return new OracleConnection(connectionString);
        }
    }
}