0

現在、C# で MySQL クラスをコーディングしていますが、Null エラーが発生し続けています。

object obj = this.Command.ExecuteScalar();

それはnullだと言っていますが、this.Commandはnullではありません。ExecuteScalar() が null の場合は、obj を null として追加するだけです。私のクラス全体はここにあります:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;

namespace RushEmu.DB
{
public class DbClient : IDisposable
{
    public MySqlConnection Connection
    {
        get;
        set;
    }

    public MySqlCommand Command
    {
        get;
        set;
    }

    public DbClient(DbManager Manager)
    {
        Connection = new MySqlConnection(Manager.ConnectionString);
        Command = new MySqlCommand();
        Command.Connection = Connection;
    }

    public void AddParamWithValue(string key, object value)
    {
        Command.Parameters.AddWithValue(key, value);
    }

    public void Execute(string qry)
    {
        Command.CommandText = qry;
        Command.ExecuteNonQuery();
        Command.CommandText = null;
    }

    public T Return<T>(string qry)
    {
        Command.CommandText = qry;

        if (typeof(T) == typeof(DataTable))
        {
            DataTable data = new DataTable();
            new MySqlDataAdapter(Command).Fill(data);

            Command.CommandText = null;

            return (T)(object)data;
        }
        else if (typeof(T) == typeof(DataRow))
        {
            DataTable data = new DataTable();
            new MySqlDataAdapter(Command).Fill(data);

            Command.CommandText = null;

            if (data.Rows.Count > 0)
            {
                return (T)(object)data.Rows[0];
            }
            else
            {
                return default(T);
            }
        }
        else if (typeof(T) == typeof(MySqlDataReader))
        {
            MySqlDataReader reader = Command.ExecuteReader();
            Command.CommandText = null;
            return (T)(object)reader;
        }
        else if (typeof(T) == typeof(int))
        {
            int i = Convert.ToInt32(Command.ExecuteScalar());
            Command.CommandText = null;
            return (T)(object)i;
        }
        else if (typeof(T) == typeof(uint))
        {
            uint i = Convert.ToUInt32(Command.ExecuteScalar());
            Command.CommandText = null;
            return (T)(object)i;
        }
        else if (typeof(T) == typeof(string))
        {
            object obj = this.Command.ExecuteScalar();
            string i = (string)obj;
            Command.CommandText = null;
            return (T)(object)i;
        }
        else if (typeof(T) == typeof(bool))
        {
            bool i = Convert.ToBoolean(Command.ExecuteScalar());
            Command.CommandText = null;
            return (T)(object)i;
        }
        else if (typeof(T) == typeof(DateTime))
        {
            DateTime i = Convert.ToDateTime(Command.ExecuteScalar());
            Command.CommandText = null;
            return (T)(object)i;
        }
        else
        {
            return default(T);
        }
    }

    void IDisposable.Dispose()
    {
    }
}
}
4

0 に答える 0