c#操作資料庫,試著封裝成類 - 求誤入指點.

来源:http://www.cnblogs.com/shouce/archive/2016/03/17/5285951.html
-Advertisement-
Play Games

Mysql操作 調用


Mysql操作

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

namespace importTxtToMysql
{
    class oMySql
    {
        //private static String mysqlcon = "Data Source=MySQL;Password=;User ID=root;Location=172.1.1.179";
        private static String mysqlcon = "database=onepc;Password=;User ID=root;server=172.1.1.1";
        private MySqlConnection conn;
        public oMySql()
        {
            conn = new MySqlConnection(mysqlcon);
        }
        private void o_open()
        {
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
            conn.Open();
        
        }

        private void o_close()
        {
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
            
        }
        public DataSet ReadMysql(String cmd)
        {
            DataSet ds;
            try
            {
                MySqlDataAdapter mdap = new MySqlDataAdapter(cmd, conn);
                ds = new DataSet();
                mdap.Fill(ds, "allhardtable");
            }
            catch (Exception ex)
            {
                ds = null;
            }      
            return ds;
        }

        //返回是否查到有用戶,若是>0則表示可以登錄
        //public int CheckLogin(MySqlParameter [] paras)
        public int CheckLogin(String user,String pass) //出現異常返回-1
        {
            int loginstatus;
            String sql = "select count(*) from login where onepc_username=@onepc_username and onepc_password=@onepc_password";// and onepc_password=@onepc_password)
            try
            {
                o_open();
                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandText = sql;
                cmd.Connection = conn;
                MySqlParameter puser = new MySqlParameter("@onepc_username", MySqlDbType.VarChar, 128);
                MySqlParameter ppass = new MySqlParameter("@onepc_password", MySqlDbType.VarChar, 128);
                puser.Value = user;
                ppass.Value = pass;
                cmd.Parameters.Add(puser);
                cmd.Parameters.Add(ppass);
                loginstatus = Convert.ToInt32(cmd.ExecuteScalar());
                /* foreach (MySqlParameter para in paras)
                {
                    cmd.Parameters.Add(para);
                }
                loginstatus = (int)cmd.ExecuteScalar();
                 */
            }
            catch (Exception ex)
            {
                loginstatus = -1;
            }
            finally
            {
                o_close();
            }
            return loginstatus;

        }

        //添加記錄  1 SQL語句 2 各欄位的值 3 資料庫類型 4 類型長度
        public int o_AddData(String sql, String[] input, MySqlDbType [] dbtype, int[] dbsize)
        {
            //String sql = "insert into login (onepc_username, onepc_password, onepc_level, onepc_display, onepc_size) values(@onepc_username, @onepc_password, @onepc_level, @onepc_display, @onepc_size)";
            //Regex R = new Regex(@"\s*insert\s+into\s+w+\s*\(([^)]*)\).*");
            /*MessageBox.Show(M.Value, M.Groups[1].Value);
                String[] a = M.Groups[1].Value.Split(',');
                MessageBox.Show(a.Length.ToString());
                int[] c = new int[a.Length];
                foreach (string b in a)
                {
                     MessageBox.Show(b);
                }
             */
            int length = 0,result = 0;
            String [] filed;
            Regex R = new Regex(@"\s*insert\s+into\s+\w+\s*\(([^)]*)\).*");
            Match M = R.Match(sql);
            if (M.Success)
            {
                filed = M.Groups[1].Value.Split(','); //分割表欄位
            }
            else
            {
                result = -1;
                return result;//返回-1表示正則匹配不了
            
            }
            length = filed.Length;
            if (input.Length != length || dbtype.Length != length || dbsize.Length != length)
            { 
                result = -2;
                return result; //輸入參數的長度不對
            }
            MySqlCommand cmd = new MySqlCommand();
            MySqlParameter[] paras = new MySqlParameter[length];
            for (int i = 0; i < length; i++)
            {
                //int iv;
                //if (dbtype[i] == MySqlDbType.Int32)
                //{
                //}
                paras[i] = new MySqlParameter("@" + filed[i].Trim(), dbtype[i], dbsize[i] );//, input[i]);   
            }
            for (int i = 0; i < length; i++)
            {
                if (dbtype[i] == MySqlDbType.Int32)
                {
                    paras[i].Value =Convert.ToInt32(input[i]);
                }
                else
                {
                    paras[i].Value = input[i];
                
                }
            
            }
            cmd.Connection = conn;
            cmd.CommandText = sql;
            for (int i = 0; i < length; i++)
            {
                cmd.Parameters.Add(paras[i]); //添加參數
            
            }
            try
            {
                o_open();
                cmd.ExecuteNonQuery();
                result = 1; //正常執行
            }
            catch (Exception ex)
            { 
                result = 0;
                //執行SQL語句出現異常
            }
            finally
            {
                o_close();
            
            }


            return result;
        }




        
    }
}

  調用

String sql = "insert into login (onepc_username, onepc_password, onepc_level, onepc_display, onepc_size) values(@onepc_username, @onepc_password, @onepc_level, @onepc_display, @onepc_size)";
            String[] value = { "huangwen" , "mima" ,"0","心若靜冰","100"};
            MySqlDbType[] vtype = { MySqlDbType.VarChar, MySqlDbType.VarChar, MySqlDbType.VarChar, MySqlDbType.VarChar, MySqlDbType.Int32 };
            int [] vsize = {128,128,128,128,10};
            oMySql insert = new oMySql();
            int a = insert.o_AddData(sql,value,vtype,vsize);
            MessageBox.Show(a.ToString());

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 二、makefile(上)01.make工具  利用make工具可以自動完成編譯工作。這些工作包括:如果修改了某幾個源文件,則只重裝新編譯這幾個源文件;如果某個頭文件被修改了,則重新編譯所有包含該頭文件的源文件。利用這個自動編譯可大大簡化開發工作,避免不必要的重新編譯。  make工具通過一個稱為M
  • 轉自:http://engrmosaic.uncc.edu/mosaic-anywhere/remote-desktop-file-format The new Terminal Services client (version 2600 and newer, 5.1.2600.x) introdu
  • Nginx 訪問日誌輪詢切割腳本         配置www.conf     配置bbs.conf     配置blog.conf 測試     配置定時任務使得每天0點整執行腳本    
  • 初學者對 : Controller where T : class,new() 不理解 ,我是初學者的時候也一樣不理解,在此做個簡單的解釋:這是類型參數約束,.NET支持的類型參數約束有以下五種: where T : struct | T必須是一個結構類型 where T : class | T必須
  • 異常處理彙總-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 舉個例子 重點:display:flex (參考:http://www.360doc.com/content/14/0811/01/2633_400926000.shtml) 效果
  • 一、前言 異常處理是每個系統必不可少的一個重要部分,它可以讓我們的程式在發生錯誤時友好地提示、記錄錯誤信息,更重要的是不破壞正常的數據和影響系統運行。異常處理應該是一個橫切點,所謂橫切點就是各個部分都會使用到它,無論是分層中的哪一個層,還是具體的哪個業務邏輯模塊,所關註的都是一樣的。所以,橫切關註點
  • 本文闡述C#中相等性比較,其中主要集中在下麵兩個方面 ==和!=運算符,什麼時候它們可以用於相等性比較,什麼時候它們不適用,如果不使用,那麼它們的替代方式是什麼? 什麼時候,需要自定一個類型的相等性比較邏輯 在闡述相等性比較,以及如何自定義相等性比較邏輯之前,我們首先瞭解一下值類型比較和引用類型比較
  • CheckBox控制項,由於它的值是選擇與非選擇。因此在提交數據時,想讓用戶必須選擇CheckBox,普通情況之下,不好做驗證。 但我們可以使用asp:CustomValidator來驗證,不過還得寫自定義驗證Javascript代碼,可參考如下:
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...