是否可以在C#Windows控制台应用程序中使用SQL Server Compact数据库(与基于WebMatrix的网站使用的数据库类型相同)?
我真的对XML(和JSON)文件感到恼火,并不喜欢其他数据库解决方案(因为它只是对一个简单的项目来说有点多)。
我花了几个小时搜索,但我能找到的只是对网站内容的引用(显然不相关)。
答案 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);
}
}
}