1、檢查數據庫連接的有效性 var client = new System.Net.Sockets.TcpClient(); var ar = client.BeginConnect(host, 1433, null, null); ar.AsyncWaitHandle.WaitOne(500); return client.Connected; client.Close(); 2、檢查連接字符串是否可以連接數據庫 SqlConnection _connection; if (_connection == null) { _connection = new SqlConnection(ConnectionString); _connection.Open(); } else if (_connection.State == System.Data.ConnectionState.Closed) { _connection.Open(); } else if (_connection.State == System.Data.ConnectionState.Broken) { _connection.Close(); _connection.Open(); } return _connection; 3、判斷是否存在某表的某個字段 string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'"; using (SqlCommand cmd = new SqlCommand(sql , Connection)) { object obj = cmd.ExecuteScalar(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return null; } else { return obj; } } Connection.Close(); 4、執行查詢語句,返回SqlDataReader ( 注意:調用該方法后,一定要對SqlDataReader進行Close ) SqlCommand cmd = new SqlCommand(strSQL, Connection); SqlDataReader reader= cmd.ExecuteReader(CommandBehavior.CloseConnection); if (reader.Read()) { reader["columnName"].ToString(); } reader.Close(); Connection.Close(); 5、執行查詢語句,返回DataSet DataSet ds = new DataSet(); SqlDataAdapter command = new SqlDataAdapter(SQLString, Connection); command.Fill(ds, "ds"); Connection.Close(); 6、 執行SQL語句,返回影響的記錄數 SqlCommand cmd = new SqlCommand(); if (conn.State != ConnectionState.Open) { conn.Open(); } cmd.Connection = conn; cmd.CommandText = sql; if (trans != null) { cmd.Transaction = trans; } cmd.CommandType = CommandType.Text;//cmdType; if (cmdParms != null) { foreach (SqlParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } } int rows = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return rows; conn.Close(); 7、批量復制數據、插入數據,實現數據庫事務 if (conn.State != ConnectionState.Open) { conn.Open(); } SqlTransaction trans = conn.BeginTransaction(); //定義批量處理對象 SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, trans); foreach (DataColumn item in dataTable.Columns) { bulkCopy.ColumnMappings.Add(item.ColumnName, item.ColumnName); } //指定被操作的數據表名 bulkCopy.DestinationTableName = tableName; bulkCopy.BatchSize = size; bulkCopy.BulkCopyTimeout = 50; //數據插入到數據庫 bulkCopy.WriteToServer(dataTable); bulkCopy.Close(); bool isSuccess = ture; if (isSuccess) { trans.Commit(); } else { trans.Rollback(); } 8、執行存儲過程 DataSet dataSet = new DataSet(); SqlDataAdapter sqlDA = new SqlDataAdapter(); SqlCommand command = new SqlCommand(storedProcName, connection); command.CommandType = CommandType.StoredProcedure; foreach (SqlParameter parameter in parameters) { if (parameter != null) { // 檢查未分配值的輸出參數,將其分配以DBNull.Value. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } command.Parameters.Add(parameter); } } sqlDA.SelectCommand = command; //sqlDA.SelectCommand.CommandTimeout = Times; sqlDA.Fill(dataSet, tableName); Connection.Close(); //command.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); //rowsAffected = command.ExecuteNonQuery(); //result = (int)command.Parameters["ReturnValue"].Value; 9、備份數據庫 SqlCommand command = new SqlCommand("use master;backup database @name to disk=@path;", Connection); command.Parameters.AddWithValue("@name", dbName); command.Parameters.AddWithValue("@path", pathDB); //command.Parameters.AddWithValue("@pathLog",pathLog); num = command.ExecuteNonQuery(); Connection.Close(); 10、恢復sql server數據庫 SqlCommand command = new SqlCommand("use master;restore database @name from disk=@path WITH replace;", Connection); command.Parameters.AddWithValue("@name", dbName); command.Parameters.AddWithValue("@path", pathDB); //command.Parameters.AddWithValue("@pathLog",pathLog); num = command.ExecuteNonQuery(); Connection.Close(); 11、加載Excel string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'"; OleDbConnection OleConn = new System.Data.OleDb.OleDbConnection(strConn); OleConn.Open(); System.Data.DataTable sheetNames = OleConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });//獲得Excel 表的架構信息 String sql = "SELECT * FROM [" + sheetNames.Rows[0]["TABLE_NAME"] + "]";//可是更改Sheet名稱,比如sheet2,等等 OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn); DataSet OleDsExcle = new DataSet(); OleDaExcel.Fill(OleDsExcle); OleConn.Close(); return OleDsExcle;
特別操作
1、獲取全部數據庫名稱 ArrayList DBNameList = new ArrayList(); SqlConnection Connection = new SqlConnection(String.Format("Data Source={0};Initial Catalog=master;User ID={1};PWD={2}", DSN, UID, PWD)); DataTable DBNameTable = new DataTable(); SqlDataAdapter Adapter = new SqlDataAdapter("select name from master..sysdatabases", Connection); Adapter.Fill(DBNameTable); foreach (DataRow Row in DBNameTable.Rows) { DBNameList.Add(Row[0]); } 2、得到指定數據庫中的全部表名稱 string constr = String.Format("Data Source={0};Initial Catalog={1};User ID={2};PWD={3}", DSN, dbname, UID, PWD); SqlConnection myConnection = new SqlConnection(constr); //根據選中數據庫,得到相應的所有表 string strSQL = "select name from sysobjects where type='" + 'U' + "'"; DataSet ds = new DataSet(); SqlDataAdapter myCommand = new SqlDataAdapter(strSQL, myConnection); myCommand.Fill(ds, "table"); List<string> tableName = new List<string>(); DataTable dt = ds.Tables[0]; foreach (DataRow item in dt.Rows) { tableName.Add(item[0].ToString()); } 3、SQL變量 SqlCommand cmd = new SqlCommand(sql, sqlCon); SqlParameter para = new SqlParameter("@UHDATA", SqlDbType.Image); para.Value = UHDATA; //UHDATA 變量是 byte[] cmd.Parameters.Add(para);
1、更加數據庫連接和sql語句獲取字段值
private string GetFieldStringValue(OleDbConnection oleconn, string ASqlStr) { string strResult = string.Empty; OleDbCommand comTemp = new OleDbCommand(ASqlStr); comTemp.Connection = oleconn; OleDbDataReader readerTemp = comTemp.ExecuteReader(); if (readerTemp.HasRows) { readerTemp.Read(); strResult = readerTemp.GetString(0); } readerTemp.Close(); return strResult; }
參考:double數組轉為image類型(即byte[])
public byte[] GetDoubleToByte(double[] d) { int size = Marshal.SizeOf(d[0]) * d.Length; IntPtr pnt = Marshal.AllocHGlobal(size); try { // Copy the array to unmanaged memory. Marshal.Copy(d, 0, pnt, d.Length); // Copy the unmanaged array back to another managed array. byte[] managedArray2 = new byte[d.Length * 8]; Marshal.Copy(pnt, managedArray2, 0, d.Length * 8); return managedArray2; } finally { // Free the unmanaged memory. Marshal.FreeHGlobal(pnt); } }