顯示具有 SQL教學 標籤的文章。 顯示所有文章
顯示具有 SQL教學 標籤的文章。 顯示所有文章

2015年12月23日 星期三

【ASP.NET SQL】有關於 開發時使用到:Geography Geometry 資料 null 問題

Asp.net 開發時使用到 圖台 出現臨時問題


可能會用到 兩種型態欄位 Geography / Geometry

當build 好的web 程式放在 Windows 2012 R2 上,環境 Framework 4.5 及 iis 8.5 內

顯示頁面記錄:讀取程式中 Geography / Geometry 資料時, 會是 null

原因:Framework CLR 不支援 SQL 格式欄位,就直接顯示 NULL

解決方案一:

專案 bin 中沒有引用到 Microsoft.SqlServer.Types.dll 元件
所以會出問題...你可以加入參考元件,它讓在bin 出現,
然後web.config 中 記得要加入以下

< add assembly="Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" >

它的存在是,本機有安裝 SQL 2008 R2 它就會裝在:
C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Types.dll
就能找到它


解決方案二:

你可以裝 軟體全名是:Microsoft® System CLR Types for SQL Server® 2008 R2
下載連結:https://www.microsoft.com/zh-tw/download/details.aspx?id=16978

檔案:SQLSysClrTypes.msi   (看系統核心是i64 或x86)

下載連 頁面中有一小段的說明:
SQL Server 系統 CLR 類型封裝包含一些元件,可實作 SQL Server 2008 R2 中的幾何、地理和階層識別碼類型。這個元件可以與伺服器分開安裝,以便讓用戶端應用程式在伺服器外部使用這些類型。

注意:本元件也需要 Windows Installer 4.5。 應該windows 2012 R2 應該是符合

安裝完後必需web 應用程式集區點選回收,或IIS重新啟動,就可以在開發專案程式不用引用Microsoft.SqlServer.Types.dll元件,

PS.好奇之心 SQL CLR 到底安裝了什麼,結果居然是一模一樣的檔案跟路徑,或許有其它東西我沒發現,總言之,就是這樣子處理掉問題


下載不同 2008 CLR  版本 ,看你資料庫是用哪種
Microsoft® SQL Server® 2008 R2 功能套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=16978

Microsoft® SQL Server® 2008 R2 SP1 功能套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=26728

Microsoft® SQL Server® 2008 R2 SP2 功能套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=30440

2014年7月1日 星期二

【SQL ASP.NET】geography STGeomFromText POINT SqlParameter 跟 SQL DECLARE 參數設定

Asp.net 的 SqlParameter 參數如下:

String strSQL = @"
                                DECLARE @g geography;
                                SET @g = geography::STGeomFromText('POINT (' + @x + ' ' + @y + ')', 4326);"

List list = new List();

            if (!string.IsNullOrEmpty(x))
            {
                SqlParameter item = new SqlParameter("x", SqlDbType.NVarChar);
                item.Value = x;
                list.Add(item);
            }

            if (!string.IsNullOrEmpty(y))
            {
                SqlParameter item = new SqlParameter("y", SqlDbType.NVarChar);
                item.Value = y;
                list.Add(item);
            }


SQL 組法如下:
DECLARE @g geography;
DECLARE @x nvarchar = '120.73261855400006';
DECLARE @y nvarchar ='23.9832863352';

SET @g = geography::STGeomFromText('POINT (' + @x + ' ' + @y + ')', 4326);

2014年5月4日 星期日

【ASP.NET MSSQL】int16 int 32 int 64 Convert 數字 smallint int bigint 型態 對照 表

ASP.NET C#

Int 16 -- (-32,768 to +32,767)

Int 32 -- (-2,147,483,648 to +2,147,483,647)

Int 64 -- (-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807)
 
MS SQL 欄位:

smallint -2^15 (-32,768) 到 2^15-1 (32,767) 2 位元組

int -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) 4 個位元組

bigint -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807) 8 位元組

tinyint 0 到 255 1 位元組

PS.以上列出在程式需要用到的數字,「對應」,MSSQL 數字欄位

2012年4月10日 星期二

【SQL 教學】 觸發程序 ( Trigger )

新增 觸發程序位置

主要 Tigger 是在 SQL 裡面 自動觸發事件(執行寫的一段程式碼,新增(請看圖片))

我大概寫一下我自己所要用到的用法

AFTER INSERT --程式新增後再新增觸發事件



---2012/04/10 Kares 新增
CREATE TRIGGER fixTable2 ON [dbo].[TABLE1]     ---fixTable2  , 針對TABLE1 資料表觸發
AFTER INSERT ---程式新增後 再比對 觸發事件 INSERT、UPDATE、DELETE 三種事件
NOT FOR REPLICATION ---不覆寫 
AS

DECLARE @YYYMM VARCHAR(5) --自訂變數
SELECT @YYYMM=NAME FROM inserted---程式新增一筆的暫存資料Table / inserted、deleted 

IF EXISTS(SELECT NAME FROM TABLE2 WHERE NAME=@YYYMM) ---判斷Keyword 資料在Table2有沒有建立過
BEGIN
PRINT '資料重復'
RETURN
END
ELSE
INSERT INTO TABLE2(NAME) VALUES(@YYYMM) ---新增一筆資料

如果要看到'資料重復' 這個字,就要到 SQL 裡面 Query Analyzer 新增一筆資料,就會看到自定的文字顯示,在程式端新增,是看不到這個訊息

2012年3月27日 星期二

【SQL】無法變更長度欄位名稱訊息 處理

如果說:sql 沒辦法更改、變更、長度 
請先到以下先設定


工具-選項- 設計師-資料表和資料庫設計工具-取消勾選
防止儲存需要資料表重建的變更

2011年12月29日 星期四

Distinct 不能做到的 多欄 或 多個欄位 的 做法


Distinct 只能撈一個欄位出來,後面的連帶欄位無法撈出,所以我們用另外一種做法


假設【A1資料表】裡面有,編號有重複,要過濾編號又要最新的更改次數,連後面的【公司名稱、姓名、地址、電話】都要一併撈出

【做法】

From裡面 select 編號,Max(更新次數) from A1 group by  編號 建一個 【A2 資料表】
另外後面 再加上原本的  【A1 資料表名稱】
然後在 Where 比對我們要的最新資料
WHERE A2.編號 = A1編號 and a2.更新次數 = A1.更新次數

資料就能抓出來了

主要再於A2 只有撈兩個關鍵欄位,再去WHERE 裡面 比對資料

【研究花費我四個小時】

SQL指令如下:
SELECT 編號,公司名稱,姓名,地址,電話 from
(select 編號,Max(更新次數) from A1 group by  編號) A2 , A1
WHERE A2.編號 = A1編號 and a2.更新次數 = A1.更新次數



2011年11月6日 星期日

Constraints 約束條件 (PK.FK.UC)

NOT NULL 設定該欄立不可含Null 值
UNIQUE 設定一個或多個欄位組合,資料內容需唯一不可重覆
PRIMARY KEY 設定資料表格不可重覆、空白或為Null的主鍵值
FOREIGN KEY 設定該欄位值的存在必須關連並參照指定資料表格的欄位值
CHECK 設定需符合所列示的條件值

注意事項
所有的Constraints資料均會存放在系統資料表格(Data Dictionary)中。建立Constraint時若賦予有意義的名稱,會較易查核Constraint的資料。Constraint標準的命名方式,應加入物件名稱。若未定名,則Oracle會自動以SYS_Cn的唯一名稱為之命名。USER_CONSTRAINTS可查核所設定的 Constraintion資料。

設立Constraints
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],...
[table_constraint][,...]);
Schema:與資料表格擁有者相同的名稱。
Table:設定資料表格名稱。
DEFAULT expr:為欄位設定預設值。
Column:設定資料表格內的欄位名稱。
Datatype:設定欄位資料型態及長度。
Column_constraint:設定欄位層級的約束條件,以維護資料的完整性。
Table_constraint:設定資料表格層級的約束條件,以維護資料的完整性。
ex:
CREATE TABLE emp(
empno NUMBER(4),
ename VARCHAR2(10),...
deptno NUMBER(7,2) NOT NULL,
CONSTRAINT emp_empno_pk
PRIMARY KEY (EMPNO));

建立 Constraints 的層級
欄位層級的 constraint
column [CONSTRAINT constraint_name] constraint_type,
資料表格層級的 constraint
column,...[CONSTRAINT constraint_name] constraint_type(column, ...),
Column 單一欄位的參照設定,可定義任何型態的Constraint。
Table 一個或多個欄位的參照設定,可定義除了NOT NULL以外的,任何型態Constraint。

NOT NULL Constraint的用途
新增資料時,Oracle會對不給值的欄位,預設填入Null值。若確保該欄位值不可為Null值,需於該欄位設定NOT NULL的Constraint條件,當資料異動時,即可自動執行資料內容檢核的動作。
ex:
..deptno NUMBER(7,2)
CONSTRAINT emp_deptno_nn NOT NULL…..

使用 UNIQUE Constraint
為一個或組合性的欄位,設立UNIQUE Constraints可確保一個或組合性的欄位值的資料唯一。為一個欄立設立UNIQUE Constraint時,可接受Null值。
ex:
CREATE TABLE dept(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE(dname));
設立UNIQUE Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。

PRIMARY KEYConstraint
每一個資料表格,僅能擁有一個PRIMARY KEY的Constraints,建立主鍵值。PRIMARY KEY可以是一個欄位或組合式欄位,其欄位值必須唯一且不可含Null值。
ex:
CREATE TABLE dept(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE (dname),
CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));
設立PRIMARY KEY Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。

FOREIGN KEYConstraint
FOREIGN KEY是維護資料庫資料完整性的Constraint。以FOREIGN KEY偵測一個或組合式欄位,與自有的或其他資料表格的PRIMARY KEY或UNIQUE Constraint欄位建立資料關連。如主檔與明細檔(父子檔)間的關連。單一的 FOREIGN KEY欄位,可接受Null值。設有FOREIGN KEY Constraint條件的欄位值(子檔),必須參照並符合被參照檔(父檔),已存在的欄位值。
ex:
CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno));
FOREIGN KEY要設定前,應先確定所要參照的PRIMARY KEY 或 UNIQUE 已事先設置完成,可供參照。

FOREIGN KEY 的保留字
FOREIGN KEY定義於子檔中,且子檔含有可參照父檔的關連欄位。
FOREIGN KEY的設定,由下列保留字所組成:
FOREIGN KEY:於子檔設定可關連參照的欄位。
REFERENCES:用以指定所參照的資料表格名稱及欄位名稱。
ON DELETE CASCADE:設定當父檔的資料刪除時,子檔中相關連的明細資料,亦會一併被刪除。

若未設定ON DELETE CASCADE,在刪除父檔的資料時,若子檔仍有相關連的明細資料存在,會產生錯誤訊息。

CHECK Constraint
若以CHECK Constraint為欄位設定列示值條件,資料表格中的每一筆資料列,均需符合所列示的限制條件。一個欄位,可設定多個CHECK Constraint列示條件,衹要邏輯條件不衝突,CHECK Constraint 的個數不限。CHECK Constraint,可設立於資料表格或欄位層級。
ex:
CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...
每一資料列的資料內容,均需滿足檢核條件
不可做為檢核條件的表述句:
參照 CURRVAL, NEXTVAL, LEVEL, 及 ROWNUM 等虛擬欄位名稱呼叫 SYSDATE, UID, USER, 及 USERENV 等函數使用
以其它資料列的資料內容做為檢核條件

新增Constraints
於資料表格建置完成後,可使用ALTER TABLE..ADD方式新增Constraint。
Table:設定資料表格名稱。
Constraint:Constraint的保留字及所指定的Constraint名稱。
Type:設定所要新增的Constraint 種類。
Column:設定Constraint運作的欄位名稱。
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);
Constraint可以新增、刪除、啟動或關閉,但不能更改其架構。
欲在已建置完成的資料表格,新增NOT NULL Constraint時,需於 ALTER TABLE 指令中,使用 MODIFY子句,否則無法設立。新增NOT NULL Constraint 時,若資料表格中已有資料,Constraint會進行檢核,若已存在有Null值,設立Constraint時會產生錯誤訊息。
ex:
ALTER TABLE emp
ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY(mgr) REFERENCES emp(empno);

刪除Constraints
刪除Constraint前,可先查核系統資料表格中的USER_CONSTRAINTS及USER_CONS_COLUMNS資料內容。確定需求後,再進行刪除作業。
ALTER TABLE table
DROP PRIMARY KEY | UNIQUE (column) |
CONSTRAINT constraint [CASCADE];

DROP指令,若使用CASCADE子句,可將有參照關連的Constraint一併刪除。

關閉Constraints
對於不想刪除再重建的Constraint,可使用ALTER TABLE..DISABLE指令,暫時性關閉Constraint的檢核作用。
ALTER TABLE emp
DISABLE CONSTRAINT
emp_empno_pk CASCADE;
DISABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。
CASCADE子句,可同時關閉有參照關連的Constraint作用。

啟動Constraints
對於被設定為DISABLE的Constraint,可使用ALTER TABLE…..ENABLE指令,重新啟動Constraint的檢核作用。
ALTER TABLE table
ENABLE CONSTRAINT constraint;
啟動Constraint作用時,會對資料表格中的所有資料列,檢核欄位值的合理性,故已存在的資料內容,需符合Constraint 的檢核條件。
啟動UNIQUE或PRIMARY KEY的Constraint 時,Oralce會自動為所設定的欄位,建置一個Unique Index索引檔。
ENABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。

查核Constraints資訊
資料表格建置完成後,若以DESC指令查驗資料表格的檔案結構,針對Constraint,衹能查看是否有NOT NULL的Constraint記錄。若要查看資料表格上的所有Constraint設定,可查核USER_CONSTRAINTS系統資料表格檔。若 Constraint設立之初,使用者未設定Constraint名稱,所查看到的會是系統所配置的系統名稱。

SELECT constraint_name,constraint_type,search_condition
FROM user_constraints
WHERE table_name = 'EMP';

USER_CONSTRAINT的Constraint Type欄位值定義:
P:Primary key。
R:Foreign key。
U:Unique。
C:Check 或 Not Null。

查核USER_CONS_COLUMNS
USER_CONS_COLUMNS系統資料表格,可查核Constraint所對應的欄位名稱。尤其是查核系統自動配置的系統名稱(SYS_Cn)所對應的欄位,非常有效。常與USER_CONSTRAINTS的查核,搭配使用。

ex:
SELECT constraint_name,column_name
FROM user_cons_columns
WHERE table_name = 'EMP';

2011年9月26日 星期一

BEGIN TRAN 說明

在Transact-SQL的交易是使用BEGIN TRAN指令開始,如果交易成功,就使用交付交易COMMIT TRAN指令結束,如下所示:
程式1:commit in Transact-SQL
BEGIN TRAN AA
DELETE FROM Students WHERE sid = 'S001';
COMMIT TRAN AA 【確定執行,無法再rollback】

如果交易失敗,復原是使用ROLLBACK TRAN指令結束,如下所示:
程式2:rollback in Transact-SQL
BEGIN TRAN
DELETE FROM Students WHERE sid = 'S001';
ROLLBACK TRAN AA   【回覆上次動作】


-------------範例如下------------

SELECT         *
FROM             Orders
WHERE         (OrderID = '10248')


begin tran aa
update orders
set ShipAddress=
'KARAAAES' WHERE (OrderID = '10248')
COMMIT TRAN aa


rollback tran aa

2011年9月20日 星期二

SQL 2008 證照介紹

SQL Server 2008 系列的 MCITP 認證與 SQL Server 2005 相同,分為資料庫管理員資料庫開發人員以及商業智慧開發人員三種管道,各以其所屬的技術領域測驗考生。


MCITP: Database Administrator 2008

前置需求:

MCTS: Microsoft SQL Server 2008 Implementation and Maintenance (70-432)

考試:

Exam 70-450: PRO: Designing, Optimizing and Maintaining a Database Server Infrastructure using Microsoft SQL Server 2008

升級考試,MCITP: Database Administrator適用。

Exam 70-453: UPGRADE: Transition your MCITP Database Administrator Skills to MCITP Database Administrator 2008

MCITP: Database Developer 2008

前置需求:

MCTS: Microsoft SQL Server 2008 Database Development (70-433)

考試:

Exam 70-451: PRO: Designing Database Solutions and Data Access Using Microsoft SQL Server 2008

升級考試,MCITP: Database Developer適用。

Exam 70-454: UPGRADE: Transition your MCITP Database Developer Skills to MCITP Database Developer 2008

MCITP: Business Intelligence Developer 2008

前置需求:
MCTS: Microsoft SQL Server 2008 Business Intelligence, Implementation and Maintenance (70-448)

考試:

Exam 70-452: PRO: Designing a Business Intelligence Infrastructure Using Microsoft SQL Server 2008

升級考試,MCITP: Business Intelligence Developer適用。

Exam 70-455: UPGRADE: Transition your MCITP Business Intelligence Developer Skills to MCITP Business Intelligence Developer 2008

2011年9月19日 星期一

SQL 2008 sp2 安裝失敗 錯誤訊息

因為它讓我搞了4-8個小時
msxml6 KB973686
因為SQL 要安裝會判讀是否已經安裝 MSXML.DLL
結果微軟更新檔已經安裝過了 就是MSXML 6 Service Pack 2 (KB973686)
依MSXML.DLL 版本 或許錯誤訊息編號不一樣,不過大同小異
都是MSXML 害的

所以SQL安裝就會出現錯誤訊息
所以要先把 MSXML 6.2 移除掉,再安裝SQL 2008

還有如果你無法除移掉,指新增移除式無法移除的話
你就可以用 以下軟體來移除
軟體:Windows Install Clean Up

以上教學完畢
就搞定了

SQL 版本介紹

一、SQL Server Enterprise Edition:具有企業級功能的SQL Server版本,適用於大型企業以及大型資料庫或資料倉儲的伺服器版本。

二、SQL Server Standard Edition:具有標準功能的SQL Server版本,適用於一般企業的伺服器版本。

三、SQL Server Workgroup Edition:自SQL Server 2000開始才有的版本,專為工作群組或部門所設計,適用於較小規模的組織。
SQL Server Web Edition:自SQL Server 2008開始才有的版本,專為Web 伺服器與Web Hosting所設計,功能上較Workgroup Edition少一些。

四、SQL Server Express Edition:免費的SQL Server版本,適用於小型應用程式或是單機型應用程式,但在功能上有設限,如只能使用一顆處理器,以及最大資料庫大小為4GB等。請見SQL Server Express。

五、SQL Server還有一個特殊的版本:SQL Server Developer Edition,它具有與SQL Server Enterprise Edition相同的功能,但只授權在開發應用程式與測試之用,也正因為如此,SQL Server Developer Edition的價格只有Enterprise Edition約千分之一而已。

2011年9月16日 星期五

MS-SQL 2008 如何遠端連線 【XP設定教學】

假設 你想用 MS-SQL 工具連到另外一台:
A_ip :123.202.175.2   (我要連到B)
要遠端連到另外一台
B_ip :143.123.3.1
以上是兩個不同的網段,都是獨立IP

你就要做到以下這些做法
要被連的那台(B)電腦 設定如下:
一、先開啟SQL Server Configuration Manager 
或者在開啟 執行 【打上】sqlservermanager10.msc
或者你在開啟程式開到SQL 底下打開也可以

二、在SQL Server 組態管理員(本機)
2.1 SQL Server 服務底下
2.1.1 打開 sql server(SQLEXPRESS) 狀態要在:正在執行
2.1.2 SQL Server Browser 狀態要在:正在執行 
Ps.狀態如果沒有打開,請打開


2.2 SQL Server 網路組態
2.2.1 SQLEXPRESS 的通訊協定
Shared Memory 狀態:已啟用
TCP/IP 狀態:已啟用
Ps.狀態如果沒有打開,請打開

三、SQL Native Client 10.0 組態
3.1 用戶端通訊協定
Shared Memory 狀態:已啟用
TCP/IP 狀態:已啟用
Ps.狀態如果沒有打開,請打開

已上就基本設定好了

接下來工作是:要把防火牆打開,不然外頭是連不進來的
請先打開防火牆
你可以直接最快的方法 請按一下 [開始],按一下 [執行],輸入 firewall.cpl
選項有三個:一般、例外、進階

請點選 【例外】
再點新增程式 (就會跳出小框框要你點你要對外開啟的軟體EXE 檔)
請加入那兩個程式例外

第一個:C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe
SQLSERVER.EXE:這個是伺服器
第二個:C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe
sqlbrowser.exe:這個是提供服務資訊 服務器
可能路徑可能不太一樣,你可以用搜尋檔案方式,去找到檔案路徑

以上這全部設定就可以讓外部用SQL 工具連進來

PS.如下
但一般都不會這樣開SQL 讓人直接連進來
網站都只會開 防火牆 IIS 而已
並不會兩個都開 :兩個的意思是(IIS、MS-SQL不會對外通同打開)
因為IIS 就對外服務,如果你真的想連到MS-SQL 你可以用【遠端連線桌面】方式來處理,比較保險,別人用 掃描器也掃不到MS-SQL PORT ,安全至上

SQL 2008 如何遠端連結

2011年8月11日 星期四

SQL CASE 的用法

CASE WHEN
欄位= ?
THEN '變成什麼值'
Else '' <--when沒找到的話就空白
End 結尾
as <--搜尋到的資料另建一個匿名欄位
SELECT Order_id, Conten_H1, Conten_H2, Conten_H3, Conten_View, CASE WHEN Conten_View = 1 THEN 'V' ELSE '' END AS Conten_View_show FROM Jsl_Index_Conten ORDER BY Order_id DESC

2011年8月7日 星期日

清除 SSMS 登入資訊


 當 SSMS 連到不同的 SQL Server 越來越多,或是使用的帳號各不同,那麼上圖中的 SSMS 登入畫面便會記住許許多多曾經用過了資訊,提供給你方便下次選用,但是很多是測試用平常根本用不上,如此會產生困擾,怎麼清除他呢?
很簡單、很暴力,請將下面路徑中的「Sqlstudio.bin」更名或刪除掉
  • WIN7:C:\Users\'Your_Account_Name'\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell
  • WINXP:C:\Documents and Settings\'Your_Account_Name'\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell
  • WinServer 2003 + SQL2005:C:\Documents and Settings\'Your_Account_Name\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell
  • WinServer 2008:C:\Users\'Your_Account_Name'\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell
若你以筆記本開啟 Sqlstudio.bin 搜尋 username 或 password 就會發現裡頭記載著你用過的主機資訊或是帳號資訊
當你將他刪除掉之後,重新開啟 SSMS 後,他會重建一個檔案,哪那些擾人無用的資訊就消失無蹤了(當然你常用的主機、帳號資訊也不見了)
Reference:
~ End

2011年8月3日 星期三

SQL 2008 建立好的資料表,如何再更改欄位屬性,並能儲存

當你第一次安裝好SQL 2008之後
建立第一個資料表
填寫欄位及屬性
好了之後


你發現你的某個欄位屬性選錯了,要再更改
卻改後來發生無法儲存,警告您要刪除重建,
這時不要緊張,只要更改某個設定,就能修改該欄位屬性並能儲存起來


請操作如下:
點選\工具->選項->設計師->防止儲存需要資料表重建的變更(把勾選拿掉即可)
OR(Designers)\資料選項\就能看到


這是新SQL 2008機制@@"還不習慣 ~



2011年7月19日 星期二

CKEditor NET 3.5.3 教學

CKEditor 編輯文件用於徒MS SQL 內,以html方式編輯及儲存

官方網站:http://docs.cksource.com/CKEditor.NET
CKEditor下載:

Asp.net 3.5 下安裝CKEditor 步驟動作:

  1. 下載工具
  2. 解壓縮
  3. CKEditor 加入工具列
  4. 頁面(aspx) 加入 CKEditor 元件
  5. 複製 fckeditor 資料夾到專案目錄下
  6. 檢查參考
  7. 測試執行
  8. 撰寫程式上線


【步驟開始】
一、下載工具
下載:點「http://download.cksource.com/CKEditor/CKEditor.NET/CKEditor.NET%203.5.3/ckeditor_aspnet_3.5.3.zip」

二、解壓縮












三、CKEditor 加入工具列


  1. 開啟 Visual Studio 開發環境
  2. 將剛剛解壓縮目錄下的 ~\ckeditor_aspnet_3.5.3\bin\Release\CKEditor.NET.dll 複製到你存放函示庫的資料夾(不要在 temp 目錄解壓縮就直接做這個程序。因為這樣會使元件指向 temp 目錄,萬一被你刪除了,元件就失效了)
  3. 點選左邊工具列,然後拉到最下面「一般」群組,然後在這個區塊點滑鼠右鍵(這樣做是要將 Fckeditor 放到這個分類,如果你想選其他,就在其他分類點滑鼠右鍵囉!),接著選「選擇項目」



4.點選瀏覽按鈕,然後切換目錄到你剛剛存放「CKEditor.NET.dll」的路徑
請選在:.NET Framework元件的選項下面


「一般」的工具箱裡就會多出了「CKEditorControl」元件
四、頁面(aspx) 加入 CKEditor 元件
做到這個步驟,你可以直接在瀏覽器檢視結果,你會發現怎麼好像只是個 MultiLine 的 Textbox,這表示動作還沒做完,繼續下面的動作吧~







五、複製 fckeditor 資料夾到專案目錄下  

  1. 接著將剛剛解壓縮目錄下的「~\ckeditor_aspnet_3.5.3\_Samples\ckeditor」目錄複製到你的專案路徑去
  2. 將該目錄加入專案裡
    PS.不一定用加至專案,可以直接將ckeditor資料夾拉到admin底下也可以

六、 檢查參考
  • 正常的情況,當你拉入了 CKEditor 元件,他就會在你的 ~\bin 目錄下放了「FredCK.FCKeditorV2.dll」,在參考裡幫你放了「CKEditor.NET」
  • 也檢查看看你的專案到這個步驟是不是也都正常
七、測試執行
在上兩張圖,我們檢查了 CKEditor 的執行狀態(是失敗的),現在請再檢查看看執行是否OK!
如果你跟我一樣,因為編輯頁面的動作是只有在後台會執行到,所以將 ckeditor 放到了 admin 的目錄下,也因為這樣導致 .net 找不到你的編輯器,請在頁面(aspx)上的 CKEditorControl 宣告增加「BasePath="~\admin\ckeditor"
如果想稍微變一下編輯器的底色,可以增加「UIColor="#BFEE62"」,就變成綠綠的很舒服的顏色。

八、撰寫測試程式(執行程式)
  • 所需元件:CKEditor」、「Button」、「Label」與「SqlDataSource」
  • 目的:在 CKEditor 編輯一段文字後,將結果呈現在 Label 上及寫入到資料庫
  1. 在 Visual Studio 拉入所需元件
  2. 在資料庫「Northwind」增加一個資料表 T1
  3. 建立 SqlDataSource 連線(詳細步驟這邊就不提了)
  4. 撰寫 Button1 執行的動作
    C# 版
    Label1.Text = CKEditorControl1.Text; // CKeditor 結果輸出到 Label
    //
    CKeditor 結果輸出到 資料庫

    SqlDataSource1.InsertParameters[0].DefaultValue = CKEditorControl1.Text;
    SqlDataSource1.Insert();
  5. 執行結果如下:
按下Button  就會把編輯器的用文字方式存在MS SQL 裡面 Lable.txt 直接抓 編輯器的.txt進來直接呈現
心得:

CKEditor 3.5.3 這版很簡單,幾個步驟就搞定了,像之前我看過2開頭的版本動作很複雜,如果有心要用的話,可以用3.5.3 版的,容易就置入,有個插曲,就是我剛用好之後,MS SQL 卻跑出來字串錯誤訊息,我也很見鬼,後來電腦重開,就搞定了,也不知道為什麼,很神奇,另外申明本篇文章,2/3參考別人的文章過來,有任何貌犯,請跟我講,我會盡快處理,還有任何網友有問題,請留言給我,我會盡快回你。

ckeditor的內容讀、寫與插入
ckeditor 目前是我用過比較合身的 wysiwyg web editor,而且他也提供非常多複雜的方法,所以我持續有新的發現。
要操作 ckeditor 的內容,使用  instance 的方法,若textarea 的id="desc"。
讀取內容
var ct= CKEDITOR.instances.desc.getData();

寫入內容
CKEDITOR.instances.desc.setData( "Insert value) ;

這裡寫入的內容會注入到原始碼,所有帶有HTML的tags可以生效
取得焦點
CKEDITOR.instances.desc.focus();

插入內容
CKEDITOR.instances.desc.insertHtml( "insert value" ) ;

執行命令
var ct= CKEDITOR.instances.desc;
ct..execCommand('bold');
ct.execCommand('forecolor',false,'#00ff00');
ct.execCommand('JustifyCenter', false, null);
ct.execCommand('fontsize', false, 15);




參考資料
CKEditor 官網 http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html
CKEditor讀取、設定內容 http://www.dotblogs.com.tw/bowwowxx/archive/2010/04/01/14349.aspx 這裡有js的striptags 方法
CKEditor API-Ticket http://dev.ckeditor.com/attachment/ticket/4254/api.html
CKEditor 的插件開發 http://bbish.net/01toturial/44/ckeditor-



按鈕的對照表 :
如果要移除表上按鈕的話可以使用config.removePlugins ='save'   (請全部打小寫才能使用,大小寫有分,詳細上網再查詢大小寫部份)
檔案ckeditor\config.js
Source:原始碼
save:儲存
NewPage:開新檔案
Preview:預覽
Templates:樣版
Cut:剪下
Copy:複製
Paste:貼上
PasteText:貼為文字格式
PasteFromWord:自 word 貼上
Print:列印
SpellChecker:拼字檢查
Scayt:即時拼寫檢查
Undo:復原(上一步)
Redo:重複(下一步)
Find:尋找
Replace:取代
SelectAll:全選
RemoveFormat:清除格式
Form:表單
Checkbox:核取方塊
Radio:選項按鈕
TextField:文字方塊
Textarea:文字區域
Select:選單
Button:按鈕
ImageButton:影像按鈕
HiddenField:隱藏欄位
Bold:粗體
Italic:斜體
Underline:底線
Strike:刪除線
Subscript:下標
Superscript:上標
NumberedList:編號清單
BulletedList:項目清單
Outdent:減少縮排
Indent:增加縮排
Blockquote:引用文字
JustifyLeft:靠左對齊
JustifyCenter:置中
JustifyRight:靠右對齊
JustifyBlock:左右對齊
Link:插入/編輯超連結
Unlink:移除超連結
Anchor:插入/編輯錨點
Image:插入影像
Flash:插入Flash
Table:插入表格
HorizontalRule:插入水平線
Smiley:插入表情
SpecialChar:插入特殊符號
PageBreak:插入分頁符號
Styles:樣式
Format:格式
Font:字體
FontSize:大小
TextColor:文字顏色
BGColor:背景顏色
Maximize:最大化
ShowBlocks:顯示區塊
About:關於CKEditor

2011年7月18日 星期一

[初學]MS SQL 管理工具 登入 名稱

我的電腦/右鍵/內容
點選/電腦名稱/ PS就是:SQL 伺服器主機名稱

ADMINK/SQLExpress
主機名稱/SQL當初建立名稱