【问题标题】:SQL Server CE Database in Console Application控制台应用程序中的 SQL Server CE 数据库
【发布时间】:2013-06-19 15:56:03
【问题描述】:

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

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

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

【问题讨论】:

  • 为什么不这样 - 你需要知道什么?
  • 我没有看到任何问题。只需打开连接,执行命令并照常关闭即可。
  • 我确实尝试过,但它似乎不是为我的控制台应用程序添加数据库 anywhere 的选项。我没有提到这一点,因为我只是假设你不能(我已经很长时间没有与控制台应用程序有任何关系了)。
  • 确保在项目\references中添加对驱动库的引用
  • 谢谢,@HughJones,这正是我所缺少的。

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


【解决方案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);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多