2017-07-19 182 views
0

我想查詢數據庫並讓它使用用戶傳入我的Web API上的獲取請求的數據返回正確的數據。從C#查詢SQL Server數據庫

我已經嘗試使用:

SqlConnection con = new SqlConnection(conString); 
con.Open(); 

if (con.State == System.Data.ConnectionState.Open) 
{ 
    SqlCommand cmd = new SqlCommand(); 
} 

不過,我不確定我需要什麼的放在命令。我只是寫這樣的事情:

WHERE forename, surname, caseid, postcode, telephone, email FROM TestDB.crm-data 

還是我誤會了?

這是完整的代碼對不起

public string Get(string forename, string surname, int? caseid, int? loanid, string postcode, string telephone, string email, string title) 
{ 
    SqlConnection con = new SqlConnection(conString); 
    con.Open(); 

    if (con.State == System.Data.ConnectionState.Open) 
    { 
     SqlCommand cmd = new SqlCommand("SELECT * FROM crm-base WHERE forename"); 
    } 
} 
+1

'WHERE姓,名,caseid,郵編,電話,電子郵件FROM TestDB.crm-data'?你的意思是'SELECT姓,姓,caseid,郵編,電話,電子郵件FROM TestDB.crm-data'? –

+0

你錯過了某些元素之前「WHERE」 –

+0

@EmanuelPirovano我的意思是,應該去什麼sqlcommand() –

回答

2

這是不完美的,但在這裏你去。您已完成其中的一部分:

using(SqlConnection con = new SqlConnection(conString)) 
{ 
    con.Open(); 

    var [email protected]"Select forename, surname, caseid, postcode, telephone, email 
       FROM TestDB.crm-data WHERE [email protected] OR [email protected]"; 

    using(SqlCommand cmd = new SqlCommand(query, con)) 
    { 
     cmd.Parameters.Add("@caseid",SqlDbType.Int).Value=1234; 
     cmd.Parameters.Add("@email", SqlDbType.VarChar, 250).Value="[email protected]"; 
     var dtb=new DataTable(); 
     var da=new SqlDataAdapter(com); 
     da.Fill(dtb) 
     //NOW dtb CONTAINS RECORDS FROM YOUR QUERY 
    } 
} 
+0

所以我可以做返回dtb? –

+0

@andywilson是的,你可以返回數據表。但請使用更新的方法添加參數。 – TheVillageIdiot

+0

@marc_s你會用什麼來代替addwithvalue是否有一個簡短的內聯方式? –

0

你可以使用原始查詢,如果查詢具有恆定的參數。但是,如果您傳遞參數的不同值(在where子句中) - 請使用SQLParameters。這些是爲防止SQL注入攻擊而構建的。

看看這個鏈接的一些例子。

http://csharp-station.com/Tutorial/AdoDotNet/Lesson06

+0

我將如何做到這一點與多個參數,並通過獲取請求傳入,因爲它不告訴我我怎麼樣需要能夠做到這一點,告訴我如何使用本地參數 –

+1

你應該在你的答案中包含一些代碼來說明鏈接文章/博客文章/小提琴等的主要點。 – TheVillageIdiot

-1

您的查詢不完整。您在不指定條件的情況下添加了where子句。

你需要做類似的事情;

SqlCommand cmd = new SqlCommand($"SELECT * FROM crm-base WHERE forename='{forename}'); 

這將抓取所有記錄,forename等於傳入get方法的記錄。

+1

不要使用字符串連接 - 使用**顯式參數** - 避免SQL注入攻擊!** –