LANGUAGE | スカ友 | 俺、関東の国王だけど
お読みください:
VM を作りました (x86 ではない!) + ASM
UIライブラリ(2D)を作りました | 4Dエンジン (画像)
虫は宇宙人です | 人類の品種 | 言葉の起源
日本語は海豚の言葉に由来します | ペンギン(ウルトラマン)
こんな日本語の文字を考案しました(画像) | こんな人工言語を作りました
関東無政府主義国へようこそ!
SQLライブラリ
0   関東の国王      2019年1月31日 木 13:56
SQLのライブラリです。これでデータベースのアクセスが使いやすくなります。

using System;
using System.Collections.Generic;
using System.Web;
using System.Data.Odbc;
using System.Text;

public class SqlParam
{
   public OdbcType Type;
   public object Value;

   private SqlParam() { }

   public SqlParam(OdbcType type, object value)
   {
       Type = type;
       Value = value;
   }

   public static SqlCmd operator +(SqlParam a, SqlParam b)
   {
       return (SqlCmd)a + b;
   }
   
   public static SqlCmd operator +(SqlParam a, string b)
   {
       return (SqlCmd)a + b;
   }
   
   public static SqlCmd operator +(SqlParam a, char b)
   {
       return (SqlCmd)a + b;
   }

   public static SqlCmd operator +(string a, SqlParam b)
   {
       return (SqlCmd)a + b;
   }

   public static SqlCmd operator +(char a, SqlParam b)
   {
       return (SqlCmd)a + b;
   }
}

public class SqlCmd
{
   private List<object> Cmd = new List<object>();

   private SqlCmd() { }

   public static implicit operator SqlCmd(string x)
   {
       if (x == null)
           return null;

       SqlCmd ret = new SqlCmd();

       ret.Cmd.Add(x);

       return ret;
   }

   public static implicit operator SqlCmd(char x)
   {
       SqlCmd ret = new SqlCmd();

       ret.Cmd.Add(x);

       return ret;
   }

   public static implicit operator SqlCmd(SqlParam x)
   {
       if (x == null)
           return null;

       SqlCmd ret = new SqlCmd();

       ret.Cmd.Add(x);

       return ret;
   }

   public static SqlCmd operator +(SqlCmd a, SqlCmd b)
   {
       if (a == null)
           return b;

       if (b == null)
           return a;

       SqlCmd ret = new SqlCmd();

       ret.Cmd.AddRange(a.Cmd);
       ret.Cmd.AddRange(b.Cmd);

       return ret;
   }

   public OdbcCommand SetCommand(OdbcCommand cmd)
   {
       cmd.CommandText = TakakuG.For(0, Cmd.Count - 1, new StringBuilder(),
           (sum, i) =>
           {
               if (Cmd[i] is string || Cmd[i] is char) return sum.Append(Cmd[i]);
               else if (Cmd[i] is SqlParam) return sum.Append('?');
               else throw new Exception();
           }).ToString();

       cmd.Parameters.Clear();

       foreach (object i in Cmd)
           if (i is SqlParam)
               cmd.Parameters.Add("", ((SqlParam)i).Type).Value = ((SqlParam)i).Value;

       return cmd;
   }

   public void ExecNQ(OdbcConnection conn)
   {
       SetCommand(conn.CreateCommand()).ExecuteNonQuery();
   }

   public object ExecS(OdbcConnection conn)
   {
       return SetCommand(conn.CreateCommand()).ExecuteScalar();
   }

   public OdbcDataReader ExecR(OdbcConnection conn)
   {
       return SetCommand(conn.CreateCommand()).ExecuteReader();
   }
}
この記事は 2019年5月15日 水 4:31 に作者によって編集されました
1   関東の国王      2020年2月29日 土 23:10
up
2   関東の国王      2020年7月17日 金 14:45
up
名前      編集用パスワード(省略可)    パスワードの記憶
数式 αβγ IPA http:// 画像 B I U
(添付ファイルは http://up.x0000.net/ にアップロードしてください)