我是一名c#新手。本文只是我是常學習的隨筆。
一、下載SQL server軟件
聽說下載開發板是最好的(開發板如果只是用來學習、研究不算是侵權)。在安裝的時候,我也遇到了很多問題,在公司的電腦安裝第一遍的時候,竟然沒有安裝MSSMS(Microsoft Sql Server Manager Studio),於是又安裝了一遍才得以成功。於是以windows身份驗證順利鏈接了數據庫服務器。但是回到家中,用家中的筆記本連續裝了一周才搞定。(每次安裝完,都無法連接到數據庫引擎),是什么原因,好像是我sa帳號也在安裝的時候填寫了。
二、新建數據庫以及表
1、新建一個名為db_19的數據庫;2、在數據庫中新建表
三、C#對Sql Server的各種操作
1、引入命名空間
System.Data; System.Data.SqlClient;
2、定義連接字符串,並建立連接對象
//sql server 身份驗證 連接字符串 private string ConnstrSqlServer = "server=服務器名稱;uid=登錄名稱;pwd=登錄密碼;database=數據庫名稱";
//windows 身份驗證連接字符串 private string ConnstrWindows = "server=服務器名稱;database=數據庫名稱;Trusted_Connection=SSPI";
其中,server是指數據庫所在的機器(服務器),如果使用當前機器(本地機器)的話,可 以使用“.”、“(local)”、“127.0.0.1”或本地機器的名字。如果使用其它機器上的數據庫的話,可以使用那台機器的機器名字(確保域和工 作組的正確)或IP地址。database指的數據庫的名字。uid和pwd分別代表連接數據庫的用戶名和密碼。
建立連接對象使用以下兩條語句:
string connString = @"Data Source = LS--20180714CSF\SQL2018; Initial Catalog = db_19; Integrated Security = True"; SqlConnection conn = new SqlConnection(connString);
3、打開數據庫連接
try { conn.Open(); MessageBox.Show("數據庫鏈接成功","系統消息"); } catch { MessageBox.Show("鏈接數據庫失敗", "系統消息"); }
4、command命令對象的應用
Command用於向數據庫傳輸的命令的對象,其構造函數常用兩個參數,一個參數是所使用的 命令文本(CommandText),另一個為所使用的連接對象Connection。
假設我們想使用SqlClient模式查詢Sql Server中db_19數據庫中Table_1表中的xh(學號)、xm(姓名)和xb(性別)三列的值,則可以建立如下的命令對象(sConn參見建立的連接sConn:
SqlCommand sCmd = new SqlCommand("SELECT xh,xm,xb FROM Table_1",sConn);
亦可使用如下的形式:
SqlCommand sCmd = new SqlCommand();
sCmd.CommandText = "SELECT xh,xm,xb FROM student";
sCmd.Connection = sConn;
命令對象常用的有三個方法:ExecuteReader(), ExecuteNonQuery()和ExecuteScalar()。ExecuteReader方法用於返回查詢結果的全部數據。 ExecuteNonQuery方法用於返回所影響的行數,一般用於Insert、Update和Delete操作。ExecuteScalar方法返回 結果中的第一行第一列的值。
//定義命令對象sCmd SqlCommand sCmd = new SqlCommand(sql, conn);
5、數據讀取器DataReader
數據讀取器應與命令對象配合使用,下面接着4中的例子來寫:
SqlDataReader sdr = null;
sdr = sCmd.ExecuteReader(); //執行命令對象,並用sdr指向結果集的第一條記錄。
while(sdr.Read()) //每讀取一條記錄后,指向其下一條記錄
{
Console.WriteLine("學號:{0},姓名:{1},性別:{2}",sdr[0],sdr[1],sdr[2]);
}
sdr.Close(); //關閉讀取器
//定義數據讀取器sdr SqlDataReader sdr = null; //執行命令對象sCmd並賦值給sdr sdr = sCmd.ExecuteReader(); //循環輸出sdr中的內容 while (sdr.Read()) { string sdrStirng = sdr["xh"] + " " + sdr["xm"] + sdr["xb"] + "\r\n"; textBox1.AppendText(sdrStirng); } //關閉數據讀取器 sdr.Close(); //關閉數據庫連接 conn.Close();
C#批量向SQL Server插入數據
private void button1_Click(object sender, EventArgs e) { string connString = @"Data Source = LS--20180714CSF\SQL2018; Initial Catalog = db_19; Integrated Security = True"; DataTable dt = new DataTable(); dt.Columns.Add("編號", typeof(int)); dt.Columns.Add("xh", typeof(int)); dt.Columns.Add("xm", typeof(int)); dt.Columns.Add("xb", typeof(int)); Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i <= 100; i++) { dt.Rows.Add(i, i, i, i); } //using (SqlConnection conn = new SqlConnection(SqlHelper.Connstr)) using (SqlConnection conn = new SqlConnection(connString)) { SqlBulkCopy bulkCopy = new SqlBulkCopy(conn); bulkCopy.DestinationTableName = "Table_1"; bulkCopy.BatchSize = dt.Rows.Count; conn.Open(); if (dt != null && dt.Rows.Count != 0) { bulkCopy.WriteToServer(dt); } } sw.Stop(); TimeSpan ts = sw.Elapsed; MessageBox.Show("向數據表Table_1批量添加數據成功!","系統消息"); }
