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

2011年7月30日 星期六

#SQL 遠端連線 問題

同網域SQL就會自己查找SERVER名稱
所以目前是不需要遠端


SQL要連SERVER端
FoxPro好像是透過另一隻程式撈副本進個人PC
所以要知道個人副本存在哪個資料夾


或是說可以再安裝的時候設定該資料夾路徑,
這個就要再研究怎麼包裝安裝檔


============================================================


'必須要考量一些安全性的問題


======================================================================
 http://kkbruce.blogspot.com/2008/08/aspnet-and-sql-server-2005-express.html


在連線到資料庫時,在SSMSE的「伺服器名稱」或ADO.NET的「Data Source」你會發現格式為:「主機名稱\資料庫服務名稱」,例如:「VMBruce\SQLExpress」,如果是在同一台電腦主機,則主機名稱可用「.」來代替,例:「.\SQLExpress」,如果是使用遠端連線則主機名稱則使用IP Address來代替,例:「192.168.254.103\SQLExpress」。


  • Windows驗證模式
    Windows驗證接受使用者在登入Windows時獲得驗證,然後再傳送安全性憑證給SSE。而使用者的帳號和密碼只保留在Windows中。當ASP.NET使用Windows驗證時,連接字串不會提供帳號及密碼,只提供使用Windows驗證的指示。適合本機連接使用。
  • SQL驗證模式
    SQL驗證使用儲存在SQL Server中的資料來做使用者驗證。在連接時需提供「使用者名稱」及「密碼」來進行驗證。適合遠端連線使用。
  • 混合模式
    可以自行選擇使用Windows驗證或SQL驗證。
  記得,驗證連接的工作不是使用者,最常使用驗證工作的是ASP.NET等應用程式,User <-- *.aspx --> ADO.NET --> Database,這樣的流程看的懂嗎?驗證的工作作用在ADO.NET那一段,它會與DataBbase驗證溝通以取得存取的權限,如果是本機連線可選擇Windows驗證模式,如果是遠端連線就選擇SQL驗證模式。

2011年7月20日 星期三

#SQL 查詢資料內有 % 逸出字元 的處理方法

SQL 查詢資料內有 % 逸出字元 的處理方法

http://blog.yam.com/reco0630/article/15693366



SQL===escape(很有用)

select   *   from   a     WHERE   name   LIKE   '%/%33'   ESCAPE   '/'   --指定用'/'符号来说明跟在其后面的通配符字符为普能字符。(第二个%是字符不是通配符来的)
go
drop   table   a
结果为:
name
----------
 11%33
 12%33   

2011年7月16日 星期六

SQL "不等於"的 SQL 語法

"不等於"的 SQL 語法


不等於某個特定值 SELECT * FROM TEST WHERE A <> 'TEST'
不等於NULL值 SELECT * FROM TEST WHERE A IS NOT NULL 

2011年7月10日 星期日

SQL 例外問題 'System.Data.SqlClient.SqlException' 發生於 System.Data.dll

 'System.Data.SqlClient.SqlException' 發生於 System.Data.dll
http://support.microsoft.com/kb/310368/zh-tw


Dim command As SqlCommand = New SqlCommand("", rConn)
似乎是因為Command()前SQL參數,沒有帶參數值進去,
如果在帶入參數前就連線資料庫
就有可能造成例外

也就是說~宣告的時候應該要帶入參數

2011年6月29日 星期三

#VB datatable 中的 SQL 語法 (不透過database)


將相同 資料結構 的 DataTable 結合

DataTable.Load 方法



How do I convert a DataTable to an IDatareader?




        tblTask.Load(tblTaskShow.CreateDataReader)
        tblTask.Load(tblTaskTmp.CreateDataReader)

=========================================================
萬用字元

* 和 % 都可以在 LIKE 比較中做為萬用字元來交替使用。如果在 LIKE 子句的字串含有 * 或 %,則這些字元應該在括號 ([]) 中逸出。如果括號在子句中,則括號字元應該在括號 (例如 [[] 或 []]) 中逸出。萬用字元允許用在模式的開端和末端、或用在模式的末端,或用在模式的開端。例如:

"ItemName LIKE '*product*'"

"ItemName LIKE '*product'"

"ItemName LIKE 'product*'"

萬用字元不允許用在字串的中間。例如,不允許 'te*xt'。

====================================================================

datatable select 

多个条件时使用 and、or ,这和 SQL 中一样。
如:
string filter = String.Format("Col1 = '{0}' and Col2 = '{1}'", col1Value, col2Value);
dt.Select(filter);




Dataset 中 2個datatable做join問題(或是做資料比對問題)?


查下去發現有更高階的
就是自己寫方法,帶入參數,建立關聯,
去將兩個 datatable 作JOIN
靠太難了ˊˋ


Dim tmpView As DataView = Dt.DefaultView
Dim tmpTable as DataTable = tmpView.ToTable("TmpTable1",True,"LastName")



===============================================

兩個DataTable的資料列如何合併




[ADO.NET]DATATABLE 新增 DataTable.Row.Add DATAROW發生 這個資料列已經屬於其他資料表(使用情境 DataSet DataTable 取 TOP)


1.先複製來源 DataTable的結構
2.使用複製資料方式加入資料列
dtRss.ImportRow(tb.Rows[iIndex])

datatable.rows.add VS datatable.importrow
加入 某個 row 複製 某個 row
該資料列不可共存於其他table 該資料列可以存在其他table(因為是複製)

這背後運作是啥原理?
=================================================================
另外在作 Datatable.clear()時
將清除Datatable所有資料,包含SCHEMA結構
DataTable.Clear not only removes all of the data from the DataTable, it clears the schema as well
==========================================================
大概知道問提出在哪
似乎是說
你將 table 或是 table  row 要寫入其他 table 時
其他 table 應該遵從要寫入 table 的 schema

最保險的做法是
1.清空要寫入的 table.clear()
2.複製被寫入的table, table.copy()
       將schema,資料值都一併寫入



2011年6月27日 星期一

SQL Join的觀念

[SQL]Join的觀念

http://www.dotblogs.com.tw/hatelove/archive/2010/01/23/13229.aspx

Join ON 交集條件
where table範圍條件

join 多個TABLE時候
似乎要多個表格,在巢狀語法內
都有相當的關聯性
===============================================
table1 join table2 on field1 = field2
此時 on 後面的 欄位,
必須出現在 select 之中,
也就是 JOIN 的條件欄位必須是會出現在 SELECT  之後的欄位

2011年6月23日 星期四

#SQL 資料庫 條件字串 串接 ,型別轉換 問題

碰到說需要下指令去把一些欄位的值 串接
直接用 +

然後有型別上的問題
用 cast( 變數 或是 值 AS 要轉成的型別 )
================================
再使用 LinQ 時
直接使用 .net 的函式來轉型

=================================
一些字串型別處理問題

Trim() : 去掉頭尾空白
Trim( "."c ) : 帶入 字元陣列參數 ,並且帶上 c 表示是 char, 去除該字元

這邊帶入要去除的字元還是有問題
要再查一查

換成用 split(要切的字串, 以什麼去切) 去跑

===================================================

SQL_找出最新日期、最舊日期、最大值、最小值


2011年6月18日 星期六

#SQL 查詢語法 條件字串 如何個別串接 問題

碰到了要能夠結合各種條件去下查詢語法

該怎麼結合任輸入的條件
成為合法語法?

1. box 會有各部分條件
2. WHERE 開始串接
3. AND 結合所有條件
4. 加上一些 真假 的條件結合 ( 透過select case 來做 checkBox 的判斷 )

先分開查吧
想到辦法在來條件結合



似乎可以用分段式的連線資料庫方式
撈資料撈個兩三次
來達到目的

或是說 SQL 用階層式的語法包
應該可以吧


應該包起來作語法檢查
看能不能透過 class 來做



======================================
各種條件分開 SELECT
然後以 JOIN ON 來組合
要在研究


怎麼判別兩個 SELECT 應該要+上 join on
然後應該 on 在哪個欄位

可能SQL語法要分開用陣列去接
然後再透過變數來判斷每個SQL有無值
在作 inner join
==================================
用 UNION 來結合兩個不同的 SQL 語法
並且會挑出兩個 SQL 語法中,所有的不同資料

[SAS] SQL join tables



===================================
直接用 AND 去串接條件了
JOIN , UNION 有一些使用上的限制
不然就是我不會

===================================

SQL語法教學


http://webdesign.kerthis.com/sql/

2011年6月17日 星期五

SQL 模糊搜尋

SQL 中有兩個萬用字元:
% (百分比符號):代表零個、一個、或數個字母。
   'ABC%': 所有以 'ABC' 起頭的字串。舉例來說,'ABCD' 和 'ABCABC' 都符合這個模式。
_ (底線):代表剛好一個字母。


萬用字元是與 LIKE 關鍵字一起使用的。


使用上
 "SELECT * FROM 人員資料 WHERE name like '%"&name&"%'"

2011年6月13日 星期一

#SQL 連接資料庫問題集

'碰到連資料庫卻說不認識SERVER名
應該是連接字串有問題
又不太知道哪邊有問題
===========================
Dim cs As String = "Server=.\SQLEXPRESS;Database=apex;User Id=sa;Password=12345;"
Server
database
uer id
password


要學怎麼使用VS.NET的除錯工具
不然解決問題都卡很久

=================================
連線解決
似乎還沒倒資料進來....

樣版的方式
似乎可以解決多表單呈現的結果
http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/ba24612e-81c7-4717-bb27-ca4912ec88fc/


DataGridView自定义列 


===================================
column
row
該如何自訂增減
要查一下
====================================
Reader 要注意 空值 的處理問題

    While myReader.Read
                If myReader.HasRows
配上try catch

Reader.nextReault 將資料移至下一個欄位
撈資料


ADO-DataReader-Command物件




====================================
欄位名稱該如何建立

column 跟 row 可能要分開建立
不然一直弄不好怪
column 應該只建立一次
丟資料透過 row

sqldatareader.read 要先執行
才能夠丟東西出來

建一個column
開始走 row 36 個 (nextResult)
在建一個col
再走 row
.......

建 5個 column
走一個 row (寫入一筆資料)
再走第二個 row 第二筆
........
====================================
dataReader 特性
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20071004161159C2R
好像不能讀取陣列
放棄
改用他法

======================================

將資料繫結至 Windows Form DataGridView 控制項


這樣方法好像是寫死的
看能不能改成動態的

=====================================
爆炸了
碰到了單一使用者登入資料庫的問題
看不同form能不能同時連線(單人或多人)
=====================================
步驟
1. connection
2. command
3. conn.open()
4. command.conection
5. Adapter.selectcomm
6. adapter.fill(ds,"table name")
7. source = ds

==========================================
不同的資料庫之間是否可作連作? 
http://www.programmer-club.com.tw/ShowSameTitleN/asp/11770.html

二個執行緒對同一個資料庫讀取衝突問題

2011年6月12日 星期日

#MS-SQL SERVER 2005 & VB.net 2008 正式版與Express差異

1. MS-SQL SERVER 2005 EXPRESS 之連線數控制
到時候會遇到系統多人使用上的問題
有點類似 syncronized
配上登入量,流量的控管
不至於讓系統crush down

應該跟 SQL 本身有關係
要查一下
========================================
MSSQL連線字串-Windows驗證(讓任何人都可以登入)
http://www.blueshop.com.tw/board/show.asp?subcde=BRD201002081146092KJ
========================================
SQL Server 2005交易與鎖定
http://www.slidefinder.net/c/ch10/26622685

可能也跟VB上面程式設計也要注意
要查一下


2. SQL 與 .NET 各版本差異要查一下
==================================================
http://5i01.com/topicdetail.php?f=300&t=538970&p=2

3. 多人連接系統時,如何達到資料存取的安全
如果要每次作 buffer , 去暫存資料表單, 最後確認在送出
那這樣是否還可以用 .net DataBinding 的方式去 建立系統

或是說 Binding 以後, 東西都丟到 Buffer, 好像也可以

====================================================
資料庫多人存取問題
http://www.programmer-club.com.tw/ShowSameTitleN/adodotnet/370.html

3. 交易的 ACID
查一下,透過這個應該就是解決之道

如果透過設定 SQL 可以解決,
或許程式上設計會簡單一點

2011年6月6日 星期一

SQL 2005 資料庫資料一直消失

怪怪的
跑erp系統總是沒幹麻就會把sql裡面的資料庫清掉
變成erp連不到sql....

該不會是ERP連上SQL後
vs.net不能同時與資料庫連線吧?

@或許該嘗試複製資料庫到專案之下
才不會相衝突

@或是多人連資料庫的機制