1. 程式人生 > >C#WinForm連線本地或遠端Sql資料庫,並進行簡單操作。

C#WinForm連線本地或遠端Sql資料庫,並進行簡單操作。

在學習C#課程時,看到課本有相關內容的介紹。想起如果自己能做一個操作資料庫的小軟體應該不錯。

所需要的知識基礎就是sql的一些語句和C#的ADO.NET。

主要就是Connection、Command、DataReader和Dataset,還有就是DataAdapter等封裝好的類。

還有就是一些基本控制元件的用法。如dataGridView,comboBox,button等。

做的過程中,遇到挺多問題de,解決之後能學到很多東西。

1.

    使用ADO.NET訪問資料庫,首先就是要建立與資料庫的連線。在學習的過程中,發現整個小軟體要做很多次與資料庫的連線和斷開。所以這部分是最基礎的內容。

    連線資料庫,主要是使用SqlConnection類,建立該類的物件,用open()方法即可開啟與資料庫的連線。在連線中,要注意的就是建立SqlConnection物件時的連線字元。

    更改連線字元,即可連線不同的資料庫。在寫這個小軟體的過程中,將連線字元的賦值和選擇封裝成一個類,因為要用到很多次。

下面是自己寫的連線字串的類。

namespace WindowsFormsApplication1
{
    class connect
    {
       
        String dbName;                                                    //資料庫名稱:
        String userName;
        String password;
        int flag;
        String sql1;
        String sql2;
        String sql3;
        String serverAddress1;
        public string Connect()
        {
            
            userName = Form7.userName1;                                    //Form7是登陸介面,從登陸介面獲得賬號,密碼
            password = Form7.password1;                                    //
            flag = Form7.check;                                                                  //flag  在這裡用於標記使用者選的是那種驗證登陸方式
            serverAddress1 = usersAdd.serverAddress;
            dbName = Form7.dbName1;     
            sql1 = "server=" + serverAddress1 + ";database=" + dbName + ";Uid=" + userName + ";Pwd=" + password + ";";     // SQL賬號驗證
            sql2 = "server=.;database=" + dbName + ";Trusted_Connection=SSPI";                                   // windows身份驗證    

            if (flag == 0)                            // 0是 windows身份驗證                   1是SQL賬號驗證
            {
                sql3 = sql2;
            }
            else
            {
                sql3 = sql1;
            }
            return sql3;
        }

2.與資料庫建立連結之後,就是對資料庫的一些操作。主要用SqlCommand類來實現。SqlCommand 和 DatdSet 的使用可以自行百度一下。
3.還有就是使用DataSet。DataSet可以作為非連線的資料快取,他獨立於資料來源,將資料庫的資料載入到DataSet中,為資料的操作做準備。

4.最後,就是使用DataAdapter,他是資料集DataSet與資料來源之間的橋樑。例如,實現查詢功能:

                SqlConnection con = new SqlConnection(sql3);                     //sql3是資料庫連結字元
                SqlDataAdapter sda = new SqlDataAdapter(sql_3, con);             //sql_3是查詢 限制語句
                DataSet ds = new DataSet();
                sda.Fill(ds, table_name);                                                         //裝載
    主體功能的基本的知識就是以上這些。

    自己做了個如下的登陸介面。該介面可以選擇連線本地或者遠端的資料庫,輸入對應資訊時,就可以連線資料庫了,登入介面要注意對使用者的輸入進行合法性的校驗。

   

    登陸後,主介面如下,有一些基本功能,如查詢,修改和刪除資料  資料庫的備份與分離,附加資料庫等。這些功能的實現參考了一下別人的程式碼。此外還有一些無聊的小工具。

    

    這部分的內容就學到這裡啦,明天開始複習tcp/ip 快考試了。

    如果有人也在學連線資料庫的,大家一起交流一下 。

    需要的 聯絡我微信:hsk710685973jq  (大家一起學習

    下面是我寫的登陸介面的程式碼。可以選擇連線本地或遠端資料庫。歡迎大家交流,教一下我這個菜鳥。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient; //用於連線sql資料庫
using System.Threading;


namespace WindowsFormsApplication1
{
    public partial class Form7 : Form
    {
        public static int check = 0;                                                           //標記   使用者選了  sql or  windows 認證
        public static string strCon = "";
        public static string userName1 = "";
        public static string password1 = "";
        public static string dbName1 = "";
        public int thread_control = 0;                                                   //用於監視文字框執行緒控制變數


        public Form7()
        {
            InitializeComponent();

        }

        private void Form7_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
            textBox1.Text = "(local)";
            Thread th4 = new Thread(textBox1_monitor);                           //監控ip框的執行緒
            th4.IsBackground = true;
            th4.Start();
        }


        private void button2_Click(object sender, EventArgs t)
        {
            thread_control = 1;
            
            if (checkBox1.Checked == true)                // check 1 是勾選 windows認證的
            {
                strCon = "server=" + textBox1.Text + ";Initial Catalog =" + comboBox1.Text + ";Integrated Security=SSPI;Connection Timeout = 5;";
            }
            else if (checkBox2.Checked == true)          // 2 s是用密碼
            {
                strCon = "server=" + textBox1.Text + ";Database=" + comboBox1.Text + ";Uid=" + textBox2.Text + ";Pwd=" + textBox3.Text + ";Connection Timeout = 5;";
            }                                                                                                                                                           //textBox2.Text, textBox3.Text,   分別是使用者名稱 加密碼  
            SqlConnection sqlcon = new SqlConnection(strCon);
            try
            {
                //記錄賬號密碼
                userName1 = textBox2.Text;
                password1 = textBox3.Text;
                dbName1 = comboBox1.Text;
                sqlcon.Open();
                usersAdd windows7 = new usersAdd(dbName1, textBox1.Text);   //這是 下一個視窗
                windows7.Show();
                this.Hide();
            }
            catch (Exception e)
            {
                MessageBox.Show("請輸入你要連線的資料庫的資訊\n " + "計算機說:  " + e.Message);
            }
            sqlcon.Close();
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {

            if (checkBox1.Checked)
            {
                checkBox1.Checked = true;
                checkBox2.Checked = false;
            }
            check = 0;
            textBox2.Text = textBox3.Text = null;
            if (checkBox1.Checked)
            {
                textBox2.Enabled = textBox3.Enabled = 確定.Enabled = false;
                checkBox2.Checked = false;
                Thread th = new Thread(Win);
                th.IsBackground = true;
                th.Start();
            }

        }

        public void Win()
        {
            string str = "server=" + textBox1.Text + ";database=master;Integrated Security=SSPI;Connection Timeout = 5;";
            comboBox1.DataSource = getTable(str);
            comboBox1.DisplayMember = "name";
            comboBox1.ValueMember = "name";
        }
        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked)
            {
                checkBox1.Checked = false;
                checkBox2.Checked = true;
            }
            check = 1;
            textBox2.Enabled = textBox3.Enabled = 確定.Enabled = true;
            textBox2.Focus();
            comboBox1.Text = null;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread th1 = new Thread(SQL);
            th1.IsBackground = true;
            th1.Start();
        }

        public void SQL()
        {

            if (check == 1)
            {
                string str = "server=" + textBox1.Text + ";database=master;Uid=" + textBox2.Text + ";Pwd=" + textBox3.Text + ";Connection Timeout = 3;";
                comboBox1.DataSource = getTable(str);
            }
            else
            {
                MessageBox.Show("請勾選SQL身份驗證選項");
            }
            comboBox1.DisplayMember = "name";
            comboBox1.ValueMember = "name";
        }


        public DataTable getTable(string str)
        {
            try
            {
                SqlConnection sqlcon = new SqlConnection(str);
                SqlDataAdapter da = new SqlDataAdapter("select name from sysdatabases ", sqlcon);
                DataTable dt = new DataTable("sysdatabases");
                da.Fill(dt);
                return dt;
            }
            catch (Exception hsk)
            {
                MessageBox.Show("您輸入的賬號密碼資訊可能有誤\n" + "具體錯誤是:" + hsk.Message);
                return null;
            }
        }

        public void textBox1_monitor()                             //用於限制 ip登陸時 誤選 windows認證 
        {
            try
            {
                while (thread_control != 1)
                {
                    if (textBox1.Text != "(local)" & textBox1.Text != "")
                    {
                        checkBox1.Enabled = false;
                    }
                    else
                    {
                        checkBox1.Enabled = true;
                    }
                }
            }
            catch
            {
            }
            
        }

        private void Form7_FormClosed(object sender, FormClosedEventArgs e)
        {
            thread_control = 0;                                                                         //讓監視文字框的執行緒退出死迴圈
            Application.Exit();
        }


        private void checkBox2_Click(object sender, EventArgs e)
        {
            check = 1;
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            Form2 window1 = new Form2();
            window1.Show();
            this.Hide();
        }
  
    }
}

相關推薦

C#WinForm連線本地遠端Sql資料庫進行簡單操作

在學習C#課程時,看到課本有相關內容的介紹。想起如果自己能做一個操作資料庫的小軟體應該不錯。 所需要的知識基礎就是sql的一些語句和C#的ADO.NET。 主要就是Connection、Command、DataReader和Dataset,還有就是DataAdapter等封

簡易部落格資料庫進行簡單操作

建立簡易部落格資料庫create database blogdb; create table users( id int unsigned not null primary key auto_increment, name varchar(32) null uniq

PLSQL連線本地oracle遠端oracle資料庫實現隨意切換

前言 本文主要講述如何連線本地oracle資料庫或者遠端oracle資料庫,實現隨意切換。 注:首先下載64位oracle以及32位輕量級客戶端(注意版本的對應,我用的是11g的oracle和11.2的客戶端): 以下步驟請自行更改路徑,不然,出錯了別怪我哦: s

Unity3D連線本地區域網MySQL資料庫

準備工作: 1、開啟 Unity3D 安裝目錄,到這個路徑下 Editor > Data > Mono > lib > mono > 2.0 拷貝出下圖的五個動態連結庫,放到 Unity3D 工程目錄下 Assets/Plugins 資料夾中。這裡我想重點說一下,在

C# winform以閱覽模式打開PPT控制PPT上下頁輪播

ssi msdn sta string 模式 簡單 ptc msd user [DllImport("user32.dll")] public extern static int GetWindowText(IntPtr hWnd, StringBuilder

重新命名資料報錯:無法用排他鎖鎖定該資料庫以執行該操作 (Microsoft SQL Server錯誤: 5030)

一般來說,在確保沒有客戶端連線的情況下,重新命名資料庫不會報這個錯 解決方法: Use master  EXEC sp_dboption 'OldDbName', 'Single User', 'TRUE'  EXEC sp_renamedb 'OldDbName',

使用 PyMySQL 連線資料庫實現簡單的增刪改查

首先需要 import pymysql 1.連線資料庫 #獲取資料庫連線 def getDBConn(): conn = pymysql.connect( host = 'localhost', port = 3306, user = 'root', password

資料庫查詢資料封裝到XML檔案中進行格式化處理進行加密操作和解密操作

1.pom檔案 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7&l

MYSQL資料庫資料表簡單操作(二)

資料型別 整形 TINTINT 1bt SMALLINT 2bt MEDIUMINT 3bt INT 4bt BIGINT 8bt 浮點型 FLOAT(8,2) 總共8位2位小數 4bt DOUBLE 8bt 字元型 CHAR固定位數空格

PHP上傳圖片到資料庫進行顯示

1、建立資料表 CREATE TABLE ccs_image ( id int(4) unsigned NOT NULL auto_increment, description varchar(250) default NULL, bin_data longbl

C# WinForm連線SQL Server資料庫的不同方式

一、不同字串定義方式 1)直接定義字串並連線 `static SqlConnection conn;//定義連線物件 public static SqlConnection Connection//連線物件的屬性 { g

解決本地SqlServer無法連線遠端伺服器資料庫錯誤10060

本地SqlServer 連不上伺服器的資料庫環境,錯誤資訊如下圖,折騰來折騰去,最終還是解決了 第一步   檢視伺服器本地埠是否已經開啟,檢視方法:首先向C:\Windows\System32資料夾新增 tcping.exe (點選下載)--->Win+R--->輸入cmd---

C#Winform連線訪問Access資料庫

C#Winform連線並訪問Access資料庫 Access新建了一個名為user的資料庫,其中有張名為UserInfor的表。將之添入專案中後,訪問資料表中資料。這樣做: OleDbConne

關於VS2013sql連線與EF訪問遠端sql資料庫,記憶體訪問非法

 問題描述: 應用程式崩潰,或安裝 Visual Studio 2013年或.NET Framework 4.5.1 後,使用 System.Data.SqlClient,則會出現"AccessViolationException"異常 EF使用System.Data.

為想學SQLite練習SQL語言的朋友搭建簡單的命令列環境------在Windows, Linux, Android(用adb連線安卓手機)上玩轉SQLite資料庫的sqlite3命令列

       有言在先: 如果你是隻想玩玩SQL語句的lazy bone,  請直接看本文最後的"LAST部分"        之所以寫這篇文章, 是因為覺得SQLite實在是太棒了, 想學習資料庫的朋友們, 千萬不要錯過這麼優秀的資料庫。 對於初學者來說, SQLite

自己寫的個C#(ASP.NET)連線SQL資料庫執行查詢和修改操作的類

這是今天花了一下時間編寫的一個ASP.NET(C# ,Framework3.5)連線SQL資料庫,執行SQL語句和獲取查詢返回資料集的類。 寫完後自己感覺,肯定這東西狀態還很原始,很多高階的需求還應對不上。目前能做的恐怕還只是基本操作,而且實現的還不一定怎麼好。 不管怎樣,

python指令碼實現本地遠端執行命令

功能:1、執行本地shell命令,執行完成後獲取結果2、執行本地shell命令,執行中實時獲取輸出結果3、執行遠端shell命令,執行完成後獲取結果4、執行遠端shell命令,執行中實時獲取輸出結果 實際操作:1、安裝paramiko apt-get install python3-pip libev

易語言如何連線遠端伺服器上的資料庫讀取資料

用易語言來連線遠端伺服器上的資料庫,可以使用支援庫中的方法。 連線資料庫方法名: 連線mysql(伺服器地址,使用者名稱,密碼,資料庫名,埠號) 注意:連線mysql()這個方法名,如果沒有,單擊工具欄中的 工具--->支援庫配置  然後全選,確定匯入。這時有這個

git之刪除本地遠端分支

git之刪除本地或遠端分支 Delete a Local GIT branch git branch -d branch_name git branch -D branch_name The -d option stands for --delete, which would delete the

Python實現遠端mysql連線進行簡單資料庫操作

1.linux伺服器 安裝mysql: apt-get install mysql-server #Root使用者安裝mysql以及相關服務  apt-get install mysql-client  apt-get install libmysqlclient-dev