2015-07-20 41 views
0
string conn = ""; 

conn = ConfigurationManager.ConnectionStrings["Conn"].ToString(); 
SqlConnection objsqlconn = new SqlConnection(conn); 

objsqlconn.Open(); 

SqlCommand objcmd = new SqlCommand("IF (select 1 from PRODUCT where PRODUCT_NAME=" + Master_product_txt.Text + ")=1 
    PRINT 'ALREADY AVAILABLE' 
ELSE 
    Insert into PRODUCT(PRODUCT_NAME) Values('" + Master_product_txt.Text + "') 
GO", objsqlconn); 

objcmd.ExecuteNonQuery(); 

MessageBox.Show("Details Successfully Added!!!"); 

我想檢查數據的基礎值之前插入值,我已經寫了查詢它,它工作在SQL Server環境下,我不能能夠實現相同在Visual StudioIF ELSE條件ASP網與SQL Server

+2

你是什麼意思的「無法」?是否有錯誤訊息?你有不同的結果嗎?此外,您的代碼非常容易受到SQL注入的影響。 – rikitikitik

回答

4
  • go東西是SSMS(SQL Server Management Studio中)語句,它不會從C#
  • 使用的參數工作,以避免SQL注入
  • 這是不尋常的使用匈牙利obj前綴在C#

快速嘗試做一個更好的版本:

​​
+0

系統在'cmd.ExecuteNonQuery();拋出'InvalidOperationException';' – RJ10

+0

@ RJ10看異常細節,它說什麼? –

+0

ExecuteNonQuery:連接屬性尚未初始化。 – RJ10

1
 SqlCommand objcmd = new SqlCommand("SELECT 1 from PRODUCT WHERE [email protected]" , objsqlconn); 
//NVarChar 
cmd.Parameters.Add("@NAME", SqlDbType.NVarChar,20).Value = Master_product_txt.Text; 
objsqlconn.Open(); 
     readr = SelectCommand.ExecuteReader(); 

     if (!readr.HasRows) 
     { 
     `// code to insert values here. 
     }` 

PRINT「已經上市」將無法正常工作here.For捕捉打印語句消息,你必須將事件處理程序添加到InfoMessage事件在連接上。並儘可能使用參數化查詢。 ;)

+1

如果你要糾正他的查詢,你應該修復他沒有使用參數太。 –

+0

修正了...... :) – learningNew

+0

[傳遞字符串時不應該使用AddWithValue](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-已經/)。 –