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
關於VS2013,sql連線與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