如果您想了解SqlServer【基本操作】和sqlserver基础操作的知识,那么本篇文章将是您的不二之选。我们将深入剖析SqlServer【基本操作】的各个方面,并为您解答sqlserver基础操作
如果您想了解SqlServer 【基 本 操 作】和sqlserver基础操作的知识,那么本篇文章将是您的不二之选。我们将深入剖析SqlServer 【基 本 操 作】的各个方面,并为您解答sqlserver基础操作的疑在这篇文章中,我们将为您介绍SqlServer 【基 本 操 作】的相关知识,同时也会详细的解释sqlserver基础操作的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- SqlServer 【基 本 操 作】(sqlserver基础操作)
- C# SqlServer操作辅助类(SqlServerHelper.cs)
- C#访问SqlServer的工具类SqlServerHelper
- DBSyncer 中间件 SQLServer同步SQLServer 配置教程
- HmailServer+mysql | SqlServer2008 安装教程
SqlServer 【基 本 操 作】(sqlserver基础操作)
1、Row_Number()
select * from dbo.T_Employee select * from (select Row_Number() over (order by FSalary) as ‘RowNum‘,* from dbo.T_Employee) a where a.RowNum>= 2 and a.RowNum<= 5
C# SqlServer操作辅助类(SqlServerHelper.cs)
开发小型软件过程中,为了节约开发时间,数据库操作的代码自己都封装了。上篇介绍了sqlcehelper这个关于操作本地数据库sdf的例子。现在介绍一下在
开发小型软件过程中,为了节约开发时间,数据库操作的代码自己都封装了。上篇介绍了sqlcehelper这个关于操作本地数据库sdf的例子。现在介绍一下在sqlserver中的代码。
因为Sqlserver数据库有多种登录方式,所以在构造函数中:
<span>#region</span>[构造函数] <span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="ConStr"></span><span>正确的数据库连接字符串</span><span></span> <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> ConStr, <span>int</span><span> TimeOut) { ConnectString </span>=<span> ConStr; connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>=<span> TimeOut; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="ConStr"></span><span>正确的数据库连接字符串</span><span></span> <span>public</span> SqlServerHelper(<span>string</span><span> ConStr) { ConnectString </span>=<span> ConStr; connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>= <span>30</span><span>; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="DataServer"></span><span>数据库服务器名称或地址</span><span></span> <span>///</span> <span><param name="DataBase"></span><span>访问的数据库</span><span></span> <span>///</span> <span><param name="UserID"></span><span>用户名</span><span></span> <span>///</span> <span><param name="Pwd"></span><span>密码</span><span></span> <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> DataServer, <span>string</span> DataBase, <span>string</span> UserID, <span>string</span> Pwd,<span>int</span><span> TimeOut) { ConnectString </span>= <span>string</span>.Format(<span>"</span><span>Data Source={0};Initial Catalog={1};User ID={2};pwd={3}</span><span>"</span><span>, DataServer, DataBase, UserID, Pwd); connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>=<span> TimeOut; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="DataServer"></span><span>数据库服务器名称或地址</span><span></span> <span>///</span> <span><param name="DataBase"></span><span>访问的数据库</span><span></span> <span>///</span> <span><param name="UserID"></span><span>用户名</span><span></span> <span>///</span> <span><param name="Pwd"></span><span>密码</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> DataServer, <span>string</span> DataBase, <span>string</span> UserID, <span>string</span><span> Pwd) { ConnectString </span>= <span>string</span>.Format(<span>"</span><span>Data Source={0};Initial Catalog={1};User ID={2};pwd={3}</span><span>"</span><span>, DataServer, DataBase, UserID, Pwd); connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>= <span>30</span><span>; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="database"></span><span>访问的数据库</span><span></span> <span>///</span> <span><param name="isLocal"></span><span>是否为本地数据库?若False,则抛出异常</span><span></span> <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> database, <span>bool</span> isLocal,<span>int</span><span> TimeOut) { </span><span>if</span> (!<span>isLocal) { </span><span>throw</span> (<span>new</span> Exception(<span>"</span><span>不在本地而是用了本地数据库访问方式,导致异常,请修改isLocal的值为True。</span><span>"</span><span>)); } connectstring </span>= <span>string</span>.Format(<span>"</span><span>Data Source=127.0.0.1;Initial Catalog={0};Integrated Security=True</span><span>"</span><span>, database); connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>=<span> TimeOut; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="database"></span><span>访问的数据库</span><span></span> <span>///</span> <span><param name="isLocal"></span><span>是否为本地数据库?若False,则抛出异常</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> database, <span>bool</span><span> isLocal) { </span><span>if</span> (!<span>isLocal) { </span><span>throw</span> (<span>new</span> Exception(<span>"</span><span>不在本地而是用了本地数据库访问方式,导致异常,请修改isLocal的值为True。</span><span>"</span><span>)); } connectstring </span>= <span>string</span>.Format(<span>"</span><span>Data Source=127.0.0.1;Initial Catalog={0};Integrated Security=True</span><span>"</span><span>, database); connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>= <span>30</span><span>; } </span><span>#endregion</span>
这样,可以方便地构造出自己的连接字符串。
同时这里用到几个比较有用的有关数据库服务器及数据库结构的函数。比如查询局域网中所有数据库实例,获取目标实例所有数据库,获取指定数据库的所有表,获取指定表所有行:
View Code
<span>#region</span> 供使用API方式时使用<span> [DllImport(</span><span>"</span><span>odbc32.dll</span><span>"</span><span>)] </span><span>private</span> <span>static</span> <span>extern</span> <span>short</span> SQLAllocHandle(<span>short</span> hType, IntPtr inputHandle, <span>out</span><span> IntPtr outputHandle); [DllImport(</span><span>"</span><span>odbc32.dll</span><span>"</span><span>)] </span><span>private</span> <span>static</span> <span>extern</span> <span>short</span> SQLSetEnvAttr(IntPtr henv, <span>int</span> attribute, IntPtr valuePtr, <span>int</span><span> strLength); [DllImport(</span><span>"</span><span>odbc32.dll</span><span>"</span><span>)] </span><span>private</span> <span>static</span> <span>extern</span> <span>short</span> SQLFreeHandle(<span>short</span><span> hType, IntPtr handle); [DllImport(</span><span>"</span><span>odbc32.dll</span><span>"</span>, CharSet =<span> System.Runtime.InteropServices.CharSet.Ansi)] </span><span>private</span> <span>static</span> <span>extern</span> <span>short</span><span> SQLBrowseConnect(IntPtr hconn, System.Text.StringBuilder inString, </span><span>short</span> inStringLength, System.Text.StringBuilder outString, <span>short</span><span> outStringLength, </span><span>out</span> <span>short</span><span> outLengthNeeded); </span><span>private</span> <span>const</span> <span>short</span> SQL_HANDLE_ENV = <span>1</span><span>; </span><span>private</span> <span>const</span> <span>short</span> SQL_HANDLE_DBC = <span>2</span><span>; </span><span>private</span> <span>const</span> <span>int</span> SQL_ATTR_ODBC_VERSION = <span>200</span><span>; </span><span>private</span> <span>const</span> <span>int</span> SQL_OV_ODBC3 = <span>3</span><span>; </span><span>private</span> <span>const</span> <span>short</span> SQL_SUCCESS = <span>0</span><span>; </span><span>private</span> <span>const</span> <span>short</span> SQL_NEED_DATA = <span>99</span><span>; </span><span>private</span> <span>const</span> <span>short</span> DEFAULT_RESULT_SIZE = <span>1024</span><span>; </span><span>private</span> <span>const</span> <span>string</span> SQL_DRIVER_STR = <span>"</span><span>DRIVER=SQL SERVER</span><span>"</span><span>; </span><span>#endregion</span> <span>///</span> <span><summary></summary></span> <span>///</span><span> 获取网内的数据库服务器名称(API方式) </span><span>///</span> <span></span> <span>///</span> <span><returns></returns></span><span>服务器名称数组</span><span></span> <span>public</span> <span>static</span> <span>string</span><span>[] GetServers() { </span><span>string</span> list = <span>string</span><span>.Empty; IntPtr henv </span>=<span> IntPtr.Zero; IntPtr hconn </span>=<span> IntPtr.Zero; System.Text.StringBuilder inString </span>= <span>new</span><span> System.Text.StringBuilder(SQL_DRIVER_STR); System.Text.StringBuilder outString </span>= <span>new</span><span> System.Text.StringBuilder(DEFAULT_RESULT_SIZE); </span><span>short</span> inStringLength = (<span>short</span><span>)inString.Length; </span><span>short</span> lenNeeded = <span>0</span><span>; </span><span>try</span><span> { </span><span>if</span> (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_ENV, henv, <span>out</span><span> henv)) { </span><span>if</span> (SQL_SUCCESS == SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (IntPtr)SQL_OV_ODBC3, <span>0</span><span>)) { </span><span>if</span> (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_DBC, henv, <span>out</span><span> hconn)) { </span><span>if</span> (SQL_NEED_DATA ==<span> SQLBrowseConnect(hconn, inString, inStringLength, outString, DEFAULT_RESULT_SIZE, </span><span>out</span><span> lenNeeded)) { </span><span>if</span> (DEFAULT_RESULT_SIZE lenNeeded) { outString.Capacity =<span> lenNeeded; </span><span>if</span> (SQL_NEED_DATA !=<span> SQLBrowseConnect(hconn, inString, inStringLength, outString, lenNeeded, </span><span>out</span><span> lenNeeded)) { </span><span>throw</span> <span>new</span> ApplicationException(<span>"</span><span>Unabled to aquire SQL Servers from ODBC driver.</span><span>"</span><span>); } } list </span>=<span> outString.ToString(); </span><span>int</span> start = list.IndexOf(<span>"</span><span>{</span><span>"</span>) + <span>1</span><span>; </span><span>int</span> len = list.IndexOf(<span>"</span><span>}</span><span>"</span>) -<span> start; </span><span>if</span> ((start > <span>0</span>) && (len > <span>0</span><span>)) { list </span>=<span> list.Substring(start, len); } </span><span>else</span><span> { list </span>= <span>string</span><span>.Empty; } } } } } } </span><span>catch</span><span> { list </span>= <span>string</span><span>.Empty; } </span><span>finally</span><span> { </span><span>if</span> (hconn !=<span> IntPtr.Zero) { SQLFreeHandle(SQL_HANDLE_DBC, hconn); } </span><span>if</span> (henv !=<span> IntPtr.Zero) { SQLFreeHandle(SQL_HANDLE_ENV, hconn); } } </span><span>string</span>[] array = <span>null</span><span>; </span><span>if</span> (list.Length > <span>0</span><span>) { array </span>= list.Split(<span>''</span><span>,</span><span>''</span><span>); } </span><span>return</span><span> array; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 获取网内的数据库服务器名称(qlClientFactory方式) </span><span>///</span> <span></span> <span>///</span> <span><returns></returns></span><span>服务器名称数组</span><span></span> <span>public</span> <span>static</span> <span>string</span><span>[] GetServersBySqlClientFactory() { DataTable dataSources </span>=<span> SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources(); DataColumn column2 </span>= dataSources.Columns[<span>"</span><span>ServerName</span><span>"</span><span>]; DataColumn column </span>= dataSources.Columns[<span>"</span><span>InstanceName</span><span>"</span><span>]; DataRowCollection rows </span>=<span> dataSources.Rows; </span><span>string</span>[] array = <span>new</span> <span>string</span><span>[rows.Count]; </span><span>for</span> (<span>int</span> i = <span>0</span>; i ) { <span>string</span> str2 = rows[i][column2] <span>as</span> <span>string</span><span>; </span><span>string</span> str = rows[i][column] <span>as</span> <span>string</span><span>; </span><span>if</span> (((str == <span>null</span>) || (str.Length == <span>0</span>)) || (<span>"</span><span>MSSQLSERVER</span><span>"</span> ==<span> str)) { array[i] </span>=<span> str2; } </span><span>else</span><span> { array[i] </span>= str2 + <span>@"</span><span>\</span><span>"</span> +<span> str; } } Array.Sort</span>string><span>(array); </span><span>return</span><span> array; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 根据不带数据库的连接字符串,遍历查找出所有数据库实例 </span><span>///</span> <span></span> <span>///</span> <span><returns></returns></span><span>指定服务器的所有数据库</span><span></span> <span>public</span> <span>string</span><span>[] GetDataBases() { List</span>string> list = <span>new</span> Liststring><span>(); SqlConnection sqlConnection </span>= <span>new</span><span> SqlConnection(ConnectString); </span><span>string</span><span>[] result; </span><span>try</span><span> { sqlConnection.Open(); SqlCommand sqlCommand </span>= <span>new</span> SqlCommand(<span>"</span><span>select name AS 数据库 from master..sysdatabases</span><span>"</span><span>, sqlConnection); SqlDataReader sqlDataReader </span>=<span> sqlCommand.ExecuteReader(); </span><span>while</span><span> (sqlDataReader.Read()) { list.Add(sqlDataReader.GetString(</span><span>0</span><span>)); } sqlDataReader.Close(); </span><span>string</span>[] array = <span>new</span> <span>string</span><span>[] { </span><span>"</span><span>master</span><span>"</span><span>, </span><span>"</span><span>tempdb</span><span>"</span><span>, </span><span>"</span><span>model</span><span>"</span><span>, </span><span>"</span><span>msdb</span><span>"</span><span> }; </span><span>string</span>[] array2 =<span> array; </span><span>for</span> (<span>int</span> i = <span>0</span>; i ) { <span>string</span> item =<span> array2[i]; </span><span>try</span><span> { list.Remove(item); } </span><span>catch</span><span> { } } result </span>=<span> list.ToArray(); } </span><span>catch</span><span> { result </span>=<span> list.ToArray(); } </span><span>finally</span><span> { sqlConnection.Close(); } </span><span>return</span><span> result; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 获取SqlServer指定数据库的所有表 </span><span>///</span> <span></span> <span>///</span> <span><returns></returns></span><span>表集合,出错则产生异常</span><span></span> <span>public</span> <span>string</span><span>[] GetTables() { </span><span>string</span> sql = <span>"</span><span>select object_name (id) from sysobjects where xtype = ''u'' and objectproperty (id,''IsMSShipped'') = 0</span><span>"</span><span>; DataTable dt </span>=<span> ReturnDataTable(sql); List</span>string> Ls = <span>new</span> Liststring><span>(); </span><span>for</span> (<span>int</span> i = <span>0</span>; i ) { Ls.Add(dt.Rows[i][<span>0</span><span>].ToString()); } </span><span>return</span><span> Ls.ToArray(); } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 获取指定表的所有列 </span><span>///</span> <span></span> <span>///</span> <span><param name="TableName"></span><span>表名</span><span></span> <span>///</span> <span><returns></returns></span><span>列集合,出错则产生异常</span><span></span> <span>public</span> <span>string</span>[] GetColumns(<span>string</span><span> TableName) { </span><span>string</span> sql = <span>string</span>.Format(<span>"</span><span>select name from syscolumns where id=object_id(''{0}'')</span><span>"</span><span>,TableName); </span><span>try</span><span> { List</span>string> Ls = <span>new</span> Liststring><span>(); DataTable dt </span>=<span> ReturnDataTable(sql); </span><span>for</span> (<span>int</span> i = <span>0</span>; i ) { Ls.Add(dt.Rows[i][<span>0</span><span>].ToString()); } </span><span>return</span><span> Ls.ToArray(); } </span><span>catch</span><span> { </span><span>throw</span><span>; } }</span>
接下来就是许多比较常用的增删改查的操作了。就不分开写了。
为了查看方便,贴出自己所有代码:
View Code
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Data; using System.Collections; using System.Runtime.InteropServices; namespace MyTool.DataBase { ////// SQL Server 数据库的操作类库。代码原创。 /// public class SqlServerHelper { #region[字段] private string connectstring = "Data Source=127.0.0.1;Initial Catalog=AdventureWorksDW;Integrated Security=True"; SqlConnection connect = null; SqlCommand command = null; private int CommandTimeOut = 30; #endregion #region[属性] /// /// 数据库连接字符串 /// public string ConnectString { get { return connectstring; } set { connectstring = value; } } #endregion <span>#region</span>[构造函数] <span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="ConStr"></span><span>正确的数据库连接字符串</span><span></span> <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> ConStr, <span>int</span><span> TimeOut) { ConnectString </span>=<span> ConStr; connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>=<span> TimeOut; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="ConStr"></span><span>正确的数据库连接字符串</span><span></span> <span>public</span> SqlServerHelper(<span>string</span><span> ConStr) { ConnectString </span>=<span> ConStr; connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>= <span>30</span><span>; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="DataServer"></span><span>数据库服务器名称或地址</span><span></span> <span>///</span> <span><param name="DataBase"></span><span>访问的数据库</span><span></span> <span>///</span> <span><param name="UserID"></span><span>用户名</span><span></span> <span>///</span> <span><param name="Pwd"></span><span>密码</span><span></span> <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> DataServer, <span>string</span> DataBase, <span>string</span> UserID, <span>string</span> Pwd,<span>int</span><span> TimeOut) { ConnectString </span>= <span>string</span>.Format(<span>"</span><span>Data Source={0};Initial Catalog={1};User ID={2};pwd={3}</span><span>"</span><span>, DataServer, DataBase, UserID, Pwd); connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>=<span> TimeOut; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="DataServer"></span><span>数据库服务器名称或地址</span><span></span> <span>///</span> <span><param name="DataBase"></span><span>访问的数据库</span><span></span> <span>///</span> <span><param name="UserID"></span><span>用户名</span><span></span> <span>///</span> <span><param name="Pwd"></span><span>密码</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> DataServer, <span>string</span> DataBase, <span>string</span> UserID, <span>string</span><span> Pwd) { ConnectString </span>= <span>string</span>.Format(<span>"</span><span>Data Source={0};Initial Catalog={1};User ID={2};pwd={3}</span><span>"</span><span>, DataServer, DataBase, UserID, Pwd); connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>= <span>30</span><span>; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="database"></span><span>访问的数据库</span><span></span> <span>///</span> <span><param name="isLocal"></span><span>是否为本地数据库?若False,则抛出异常</span><span></span> <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> database, <span>bool</span> isLocal,<span>int</span><span> TimeOut) { </span><span>if</span> (!<span>isLocal) { </span><span>throw</span> (<span>new</span> Exception(<span>"</span><span>不在本地而是用了本地数据库访问方式,导致异常,请修改isLocal的值为True。</span><span>"</span><span>)); } connectstring </span>= <span>string</span>.Format(<span>"</span><span>Data Source=127.0.0.1;Initial Catalog={0};Integrated Security=True</span><span>"</span><span>, database); connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>=<span> TimeOut; } </span><span>///</span> <span><summary></summary></span> <span>///</span><span> 构造函数,初始化 </span><span>///</span> <span></span> <span>///</span> <span><param name="database"></span><span>访问的数据库</span><span></span> <span>///</span> <span><param name="isLocal"></span><span>是否为本地数据库?若False,则抛出异常</span><span></span> <span>public</span> SqlServerHelper(<span>string</span> database, <span>bool</span><span> isLocal) { </span><span>if</span> (!<span>isLocal) { </span><span>throw</span> (<span>new</span> Exception(<span>"</span><span>不在本地而是用了本地数据库访问方式,导致异常,请修改isLocal的值为True。</span><span>"</span><span>)); } connectstring </span>= <span>string</span>.Format(<span>"</span><span>Data Source=127.0.0.1;Initial Catalog={0};Integrated Security=True</span><span>"</span><span>, database); connect </span>= <span>new</span><span> SqlConnection(ConnectString); CommandTimeOut </span>= <span>30</span><span>; } </span><span>#endregion</span> #region[私有函数] private void Open() { try { if (connect.State != System.Data.ConnectionState.Open) { connect.Open(); } } catch (Exception ex) { throw (new Exception(ex.Message)); } } private void Close() { try { if (connect.State != System.Data.ConnectionState.Closed) { connect.Close(); } } catch (Exception ex) { throw (new Exception(ex.Message)); } } #endregion /// /// 测试是否能够连通 /// /// 布尔值 public bool ConnectTest() { try { connect.Open(); } catch { connect.Close(); return false; } return true; } /// /// 执行无返回的Sql语句,如插入,删除,更新 /// /// SQL语句 /// 受影响的条数 public int ExecuteNonQuery(string sqlstr) { try { Open(); command = new SqlCommand(sqlstr, connect); int num = command.ExecuteNonQuery(); command.Parameters.Clear(); Close(); return num; } catch { throw; } } /// /// 执行查询语句,返回DataSet /// /// Sql /// DataSet数据集 public DataSet ReturnDataSet(string sqlstr) { DataSet ds = new DataSet(); try { Open(); SqlDataAdapter adapter = new SqlDataAdapter(sqlstr, connect); adapter.Fill(ds, "Obj"); } catch (Exception) { throw; } return ds; } /// /// 执行查询语句,返回DataTable /// /// Sqk /// DataTable数据表 public DataTable ReturnDataTable(string sqlstr) { return ReturnDataSet(sqlstr).Tables[0]; } /// /// 执行查询语句,返回DataReader /// /// Sql /// DataReader public SqlDataReader ReturnDataReader(string sqlstr) { try { Open(); command = new SqlCommand(sqlstr, connect); SqlDataReader myReader = command.ExecuteReader(); command.Parameters.Clear(); Close(); return myReader; } catch (System.Data.SqlClient.SqlException e) { throw new Exception(e.Message); } } /// /// 执行事务 /// /// public void ExecuteSqlTran(ArrayList SQLStringList) { Open(); command = new SqlCommand(); command.Connection = connect; SqlTransaction tx = connect.BeginTransaction(); command.Transaction = tx; try { for (int n = 0; n ) { string strsql = SQLStringList[n].ToString(); if (strsql.Trim().Length > 1) { command.CommandText = strsql; command.ExecuteNonQuery(); } } tx.Commit(); } catch (Exception) { tx.Rollback(); throw; } } #region 供使用API方式时使用 [DllImport("odbc32.dll")] private static extern short SQLAllocHandle(short hType, IntPtr inputHandle, out IntPtr outputHandle); [DllImport("odbc32.dll")] private static extern short SQLSetEnvAttr(IntPtr henv, int attribute, IntPtr valuePtr, int strLength); [DllImport("odbc32.dll")] private static extern short SQLFreeHandle(short hType, IntPtr handle); [DllImport("odbc32.dll", CharSet = System.Runtime.InteropServices.CharSet.Ansi)] private static extern short SQLBrowseConnect(IntPtr hconn, System.Text.StringBuilder inString, short inStringLength, System.Text.StringBuilder outString, short outStringLength, out short outLengthNeeded); private const short SQL_HANDLE_ENV = 1; private const short SQL_HANDLE_DBC = 2; private const int SQL_ATTR_ODBC_VERSION = 200; private const int SQL_OV_ODBC3 = 3; private const short SQL_SUCCESS = 0; private const short SQL_NEED_DATA = 99; private const short DEFAULT_RESULT_SIZE = 1024; private const string SQL_DRIVER_STR = "DRIVER=SQL SERVER"; #endregion /// /// 获取网内的数据库服务器名称(API方式) /// /// 服务器名称数组 public static string[] GetServers() { string list = string.Empty; IntPtr henv = IntPtr.Zero; IntPtr hconn = IntPtr.Zero; System.Text.StringBuilder inString = new System.Text.StringBuilder(SQL_DRIVER_STR); System.Text.StringBuilder outString = new System.Text.StringBuilder(DEFAULT_RESULT_SIZE); short inStringLength = (short)inString.Length; short lenNeeded = 0; try { if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_ENV, henv, out henv)) { if (SQL_SUCCESS == SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (IntPtr)SQL_OV_ODBC3, 0)) { if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_DBC, henv, out hconn)) { if (SQL_NEED_DATA == SQLBrowseConnect(hconn, inString, inStringLength, outString, DEFAULT_RESULT_SIZE, out lenNeeded)) { if (DEFAULT_RESULT_SIZE lenNeeded) { outString.Capacity = lenNeeded; if (SQL_NEED_DATA != SQLBrowseConnect(hconn, inString, inStringLength, outString, lenNeeded, out lenNeeded)) { throw new ApplicationException("Unabled to aquire SQL Servers from ODBC driver."); } } list = outString.ToString(); int start = list.IndexOf("{") + 1; int len = list.IndexOf("}") - start; if ((start > 0) && (len > 0)) { list = list.Substring(start, len); } else { list = string.Empty; } } } } } } catch { list = string.Empty; } finally { if (hconn != IntPtr.Zero) { SQLFreeHandle(SQL_HANDLE_DBC, hconn); } if (henv != IntPtr.Zero) { SQLFreeHandle(SQL_HANDLE_ENV, hconn); } } string[] array = null; if (list.Length > 0) { array = list.Split('',''); } return array; } /// /// 获取网内的数据库服务器名称(qlClientFactory方式) /// /// 服务器名称数组 public static string[] GetServersBySqlClientFactory() { DataTable dataSources = SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources(); DataColumn column2 = dataSources.Columns["ServerName"]; DataColumn column = dataSources.Columns["InstanceName"]; DataRowCollection rows = dataSources.Rows; string[] array = new string[rows.Count]; for (int i = 0; i ) { string str2 = rows[i][column2] as string; string str = rows[i][column] as string; if (((str == null) || (str.Length == 0)) || ("MSSQLSERVER" == str)) { array[i] = str2; } else { array[i] = str2 + @"\" + str; } } Array.Sortstring>(array); return array; } /// /// 根据不带数据库的连接字符串,遍历查找出所有数据库实例 /// /// 指定服务器的所有数据库 public string[] GetDataBases() { Liststring> list = new Liststring>(); SqlConnection sqlConnection = new SqlConnection(ConnectString); string[] result; try { sqlConnection.Open(); SqlCommand sqlCommand = new SqlCommand("select name AS 数据库 from master..sysdatabases", sqlConnection); SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); while (sqlDataReader.Read()) { list.Add(sqlDataReader.GetString(0)); } sqlDataReader.Close(); string[] array = new string[] { "master", "tempdb", "model", "msdb" }; string[] array2 = array; for (int i = 0; i ) { string item = array2[i]; try { list.Remove(item); } catch { } } result = list.ToArray(); } catch { result = list.ToArray(); } finally { sqlConnection.Close(); } return result; } /// /// 获取SqlServer指定数据库的所有表 /// /// 表集合,出错则产生异常 public string[] GetTables() { string sql = "select object_name (id) from sysobjects where xtype = ''u'' and objectproperty (id,''IsMSShipped'') = 0"; DataTable dt = ReturnDataTable(sql); Liststring> Ls = new Liststring>(); for (int i = 0; i ) { Ls.Add(dt.Rows[i][0].ToString()); } return Ls.ToArray(); } /// /// 获取指定表的所有列 /// /// 表名 /// 列集合,出错则产生异常 public string[] GetColumns(string TableName) { string sql = string.Format("select name from syscolumns where id=object_id(''{0}'')",TableName); try { Liststring> Ls = new Liststring>(); DataTable dt = ReturnDataTable(sql); for (int i = 0; i ) { Ls.Add(dt.Rows[i][0].ToString()); } return Ls.ToArray(); } catch { throw; } } } }
C#访问SqlServer的工具类SqlServerHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using MySql.Data.MySqlClient; using System.Data; class MySqlHelper:IDisposable { private MySqlConnection m_conn = null; private MySqlTransaction m_trans = null; private bool m_tran_enabled = false; public MySqlHelper() { m_conn = new MySqlConnection(); m_conn.ConnectionString = "Server=localhost;Port=3301;Uid=sa;Pwd=000"; m_conn.Open(); } public void BeginTrans() { m_trans = m_conn.BeginTransaction(); m_tran_enabled = true; } public void Commit() { if (m_trans != null && m_tran_enabled) { m_tran_enabled = false; m_trans.Commit(); } } public void Rollback() { if (m_trans != null && m_tran_enabled) { m_tran_enabled = false; m_trans.Rollback(); } } public object QuerySome(string sql,int fieldindex) { using (MySqlCommand cmd = new MySqlCommand(sql, m_conn)) { using (MySqlDataReader sr = cmd.ExecuteReader()) { if (sr.Read()) { return sr.GetValue(fieldindex); } } } return null; } public delegate void FillValues(MySqlDataReader sr); public void QuerySomes(string sql, FillValues fill) { using (MySqlCommand cmd = new MySqlCommand(sql, m_conn)) { using (MySqlDataReader sr = cmd.ExecuteReader()) { fill(sr); } } } public DataTable Source(string sql) { DataTable dt = null; MySqlCommand cmd = null; MySqlDataAdapter ad = null; try { lock (dt = new DataTable()) { cmd = new MySqlCommand(sql, m_conn); ad = new MySqlDataAdapter((MySqlCommand)cmd); dt.Clear(); ad.Fill(dt); } } catch (Exception e) { throw e; } return dt; } public void ExecProc(string proc, params MySqlParameter[] ps) { using (MySqlCommand cmd = new MySqlCommand(proc, m_conn)) { cmd.CommandType = System.Data.CommandType.StoredProcedure; foreach (MySqlParameter p in ps) { cmd.Parameters.Add(p); } cmd.ExecuteNonQuery(); } } void IDisposable.Dispose() { m_conn.Close(); m_conn.Dispose(); if (m_trans != null) { m_trans.Dispose(); } } }
DBSyncer 中间件 SQLServer同步SQLServer 配置教程
DBSyncer 项目地址:https://gitee.com/ghi/dbsyncer
SqlServer 配置
原理:SQL Server 2008提供了内建的方法变更数据捕获(Change Data Capture 即CDC)以实现异步跟踪用户表的数据修改。
要求2008版本以上, 启动代理服务(Agent服务), 连接账号具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。对于所有其他用户,具有源表SELECT 权限;如果已定义捕获实例的访问控制角色,则还要求具有该数据库角色的成员身份。
打开CDC功能
windows环境
快捷键windows + r,输入 services.msc 进入系统服务窗口
services.msc
启动代理服务,默认也会启动数据库服务
服务状态为正在运行
Linux环境也是开启上面的2个服务
SqlServer服务配置修改完成了!接下来配置驱动
准备2张表,分别是MY_USER和MY_ORG,计划将MY_USER的数据同步到MY_ORG中
1、进入dbs页面,添加SqlServer连接
2、因为我的2张表都是一个库里,所以这里我只需创建1个连接
3、添加驱动
4、添加表映射关系,进入表字段映射页面查看一下,点击保存
5、保存返回到驱动管理页面
6、启动驱动,开始全量同步
执行完成
7、检查一下表数据是否都同步过来了
准备测试增量同步
1、切换为增量同步,返回
2、启动驱动
3、手动修改数据,验证增删改事件
验证插入数据
INSERT INTO [dbo].[MY_USER]([id], [name], [age], [money], [create_date], [remark], [time], [d_time], [img])
VALUES (1000006, ''验证增量同步'', 9, 99.99, ''2022-07-24'', ''hello'', ''14:23:39'', ''2022-07-24 14:23:41'', NULL);
查看一下MY_ORG表,有新记录
查看监控,也能看到日志
继续验证修改数据
查看一下MY_ORG表,有新变更
验证删除数据
最后再看一下监控
恭喜您,学完了 SQLServer同步SQLServer 配置教程!
下期见! AE86 ☕
HmailServer+mysql | SqlServer2008 安装教程
1、局域网配置hmailServer需要在局域网进行DNS解析,我当时没有配置成功,因为有域名就直接用域名配了
2、在下文第四点配置的AfterLogic Webmail是邮箱的Web端,这个Web端比较简陋,建议使用FoxMail或者OutLook这样的工具来收发邮件
3、hmailServer自带一个PHPWebAdmin项目,这个项目跟AfterLogic Webmail都是PHP项目需要PHP环境,PHPWebAdmin是用来管理hamilServer的域名、邮箱帐号等,不是用来收发邮件
4、看到网友在资源下载上的一些评论,一直想完善本并文补充一些内容以更好的帮助大家学习,但本文发出后一直在忙于工作和整理其他的学习资料。若需要帮助可以发送邮件到:liyangxi99@sina.com,水平有限希望能帮到各位。
一、Hmail官方网站 http://www.hmailserver.com/
二、安装hmailServer
如果MSSQL安装正确,连接MSSQL基本上是一致,只是在选择服务时,选择MMSQL的服务
三、hmail汉化操作
1、下载汉化文件chinese.ini http://download.csdn.net/detail/wandan_/6858505
2、将这个文件拷贝到hmail安装目录下的Languages下
3、在hmail安装目录Bin里找到hMailServer.INI文件,打开,找到下面的位置在最后加上chinese
[GUILanguages]
ValidLanguages=english,swedish,chinese
4、重启hmailServer服务
5、登录hmailSEver
四、开启MySql远程服务
假如你已经安装了MySQL,那么我们看下mysql这个库里的user表
这个表存储的是mysql使用用户的表,看上面就是root账户的信息,将Host字段改成‘%’就表示可以进行远程访问,看懂这个表之后我们就明白下面的SQL语句是启什么作用的了。
下面通过SQL语句创建一个用户:
1、创建一个用户
mysql> create user hmailAdmin;
2、为这个用户设置密码
mysql> update user set Password=password(''123456'') where User = ''hmailAdmin'';
3、为这个账户进行授权
mysql> grant all on hmail.* to hmailAdmin identified by ''123456'';
hmail.*:hmail是上面我创建的数据库。hmailAdmin是创建的用户
//开启MySql远程服务器要注意:确保防火墙开启了MySql的端口
四、hmail配置AfterLogic WebMail
(1)要配置webmail,必须先配置好PHP环境,windows2008系统可可参考http://blog.csdn.net/wandan_/article/details/22731767
(2)如果你的PHP环境已经配置好了,下面下载AfterLogic WebMail并解压
下载地址:http://www.afterlogic.org/download/webmail-lite
AfterLogic在线文档:http://www.afterlogic.com/wiki/WebMail_Pro_7_documentation
(3) 将解压后将webmail,COPY到C:\inetpub\wwwroot下(你的根目录)
(4)http://localhost/webmail/install 访问该地址进行安装,如果有警告按(5)配置
(5)打开php.ini并查找以下相关关键字做如下修改
(6)如果有下图的警告信息
点击上面的FAO,找到下图的位置,注意是Windows系统的
上图的意思是Guest账户没有足够的权限去访问webmail的data文件夹,操作的步骤看下面的介绍
找webmail下的data文件夹,邮件属性,按下图操作
点击确定完成,然后刷新 http://localhost/webmail/install
(7)如果没有警告,点击Next >> I Agree
下图Host是你的主机,如果是远程填你远程的IP地址,Mysql端口如果有改过,会连接不成功(这里我是默认的3306)
因为webmail连接数据库的端口没改,具体在哪修改我还没找到,如果有人知道,希望留言分享下
(8)下一步是输入管理员mailadm的密码 >> 下一步
这里host,如果是远程输入你的远程IP地址,测试连接没问题,再下一步就安装完成
(9)安装完成后,删除webmail下的install文件夹
访问管理员登录地址:http://localhost/webmail/adminpanel,输入用戶:mailadm和密碼(刚有配置过)
普通帐号的登录:http://localhost/webmail
选择汉语
今天关于SqlServer 【基 本 操 作】和sqlserver基础操作的分享就到这里,希望大家有所收获,若想了解更多关于C# SqlServer操作辅助类(SqlServerHelper.cs)、C#访问SqlServer的工具类SqlServerHelper、DBSyncer 中间件 SQLServer同步SQLServer 配置教程、HmailServer+mysql | SqlServer2008 安装教程等相关知识,可以在本站进行查询。
本文标签: