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

2015年4月15日 星期三

pymssql access sql server instance on linux

當使用 pymssql 連接 sql server 上不是 default 的 instance 時
如果是在 windows 平台上, 可以直接用
servername\instance  這樣的形式連上 sql server

但是在 linux 上就不行
一個可行的替代方案是  找出該 instance listen 的 port
然後用 servername:port 的方式連上 sql server

reference:
http://www.pymssql.org/en/latest/ref/pymssql.html#pymssql.Connection

pymssql needs commit if modify tables

用 pymssql 有一點需要注意的是  假如執行會修改 table 的 SQL 語句
在執行完必須要呼叫 commit
即使是執行 stored procedure 也是一樣
否則會發現 table 的內容都沒有被修改

2015年1月8日 星期四

SQL query with like

在 C# 使用 SQL query 的參數如果要加 % 的話, 要用 + 號
例如


cmd.CommandText = "select * from MyTable where Arg like @Arg+'%'";

2014年10月13日 星期一

用 parameterized queries 防止 SQL Injection

當用程式做資料庫操作時, 不建議把 SQL command 直接寫在 code 裡面, 因為這樣常會有背 SQL injection 的風險, 比較好的方式是使用 parameterized queries.

例如:

string stmt = "INSERT INTO dbo.Test(id, name) VALUES(@ID, @Name)";

SqlCommand cmd = new SqlCommand(smt, _connection);
cmd.Parameters.Add("@ID", SqlDbType.Int);
cmd.Parameters.Add("@Name", SqlDbType.VarChar, 100);

for (int i = 0; i < 10000; i++)
{
    cmd.Parameters["@ID"].Value = i;
    cmd.Parameters["@Name"].Value = i.ToString();

    cmd.ExecuteNonQuery();
}

reference:
http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php
http://stackoverflow.com/questions/8218867/c-sharp-sql-insert-command

2014年3月26日 星期三

資料表中的 Primary key 可以由多個 column 組成

在 SQL 資料庫中, 都知道一個 table 只能有一個 primary key.
但有點令人疑惑的是, 一個 primary key 可以不只是一個 column, 可以是多個 column.

如果在某個 table 中發現不只一個 column 被標記成 primary key 的話,
不是這個 table 有多個 primary key, 而是這個 table 的 primary key 由多個 column 組成

2014年3月25日 星期二

SQL Server 資料庫表格關聯圖

markdown SQL Server Management Studio 提供一個功能,以容易理解的圖型方式顯示資料表間的關聯性,在資料庫下面會有一個叫做 Database Diagrams 的資料夾,雙擊裡面的項目,資料表關聯圖就會顯示出來 ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_sAecdCiBWrut6BxyBmvjxpJWBH5v5J6BZCcIRRHbyXOwvf-OWtTQB-EZNmtUulNm4wNotehwa1kL8oPjNKBPJnnLwqcMA_Pk2ItOPvpf3yY4nWyLUaaf-4tdwNz9uYArBV2GgZTuUTEA/s1600/%25E7%25B4%25A2%25E5%25BC%2595.jpg) 若是想要新增資料表間的關聯性,也可以在這張圖表直接操作,簡單易懂

2013年11月24日 星期日

MSSQL 的視窗操作工具

SQL Server Management studio, 這是 MS 提供的資料庫操作視窗工具