protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection myConnection = new SqlConnection("server=VIVID-PC;Integrated Security = True;Database=SchoolDb");
SqlCommand myCommand = new SqlCommand("Command String", myConnection);
myConnection.Open();
string firstText = TextBox1.Text;
string SecondText = TextBox2.Text;
string thirdText = TextBox3.Text;
string fourthText = TextBox4.Text;
myCommand = new SqlCommand("INSERT INTO SchoolDb_Student(StudentName,RollNo,Session,MobileNo)values('" + firstText + "','" + SecondText + "' , '" + thirdText + "','" + fourthText + "')", myConnection);
myCommand.ExecuteNonQuery();
myConnection.Close();
Response.Redirect("/view.aspx");
}
Q
當唯一鍵違反
1
A
回答
1
- Use command with parameters to pass data to server。
- 確保你處理連接和命令(via using statement)
- Store connection strings in config file
- 不要創建虛擬命令對象
下面是完整的代碼:
using(var connection = new SqlConnection(connectionString))
using(var command = connection.CreateCommand())
{
command.CommandText =
@"INSERT INTO SchoolDb_Student(StudentName,RollNo,Session,MobileNo)
VALUES (@studentName, @rollNo, @session, @mobileNo)";
command.Parameters.AddWithValue("studentName", TextBox1.Text);
command.Parameters.AddWithValue("rollNo", TextBox2.Text);
command.Parameters.AddWithValue("session", TextBox3.Text);
command.Parameters.AddWithValue("mobileNo", TextBox4.Text);
connection.Open();
try
{
command.ExecuteNonQuery();
}
catch(SqlException e)
{
if (e.Message.Contains("Violation of UNIQUE KEY constraint"))
// you got unique key violation
}
}
進一步考慮 - 改善命名的你的代碼 - TextBox1,TextBox2等對讀者沒有任何意義。給他們適當的名字,比如StudentNameTextBox,RollNoTextBox等。另外一個好的做法是將數據訪問和UI邏輯分開。
+1
謝謝你的建議兄弟。 – Ashiq
0
如果數據庫檢測到唯一鍵衝突如何得到警報,這一行
myCommand.ExecuteNonQuery();
會拋出異常。您可以捕獲該異常並繼續處理您自己的代碼:
try
{
myCommand.ExecuteNonQuery();
}
catch(Exception e)
{
// right here, "something" went wrong. Examine e to check what it was.
}
請注意,您的代碼容易受到SQL注入攻擊。您應該使用命令參數而不是手動構建SQL。另外,你應該使用using
塊(see here for details)
0
0
使用您的returnType from ExecuteNonQuery()(閱讀備註部分)來檢測插入失敗。你可以使用例外或不。行患部
的試試這個:
try
{
... your rest of the code
...
int rowsAffected = myCommand.ExecuteNonQuery(); // Most probaboly it will throw exception in case of Unique key violation. If not, still no rows have been affected
if(rowsAffected<1)
{
//your Alert for no records inserted
}
else
{
//your alert for successful insertion
}
}
catch(SqlException ex)
{
//check the exception and display alert
}
finally
{
//release connection and dispose command object
}
0
正如評論use命令PARAM建議。
try
{
//Your other code
_myCommand.ExecuteNonQuery();
myConnection.Close();
Response.Redirect("/view.aspx");
}
catch(SqlException sqlExc)
{
// Your popup or msg.
}
您還循環查找catch塊中的不同sql錯誤。
相關問題
- 1. 違反唯一鍵約束
- 2. DbUpdateException違反唯一鍵
- 3. Django的關鍵違反唯一約束
- 4. 重複鍵值違反唯一約束
- 5. 唯一違規:7錯誤:重複鍵值違反唯一約束「users_pkey」
- 6. 違反唯一約束?
- 7. django「重複的鍵值違反了唯一約束」主鍵
- 8. 違反外鍵
- 9. 當我有一個非唯一索引時違反了唯一約束條件
- 10. PG :: UniqueViolation:錯誤:重複鍵值違反唯一約束
- 11. php Postgresql pg_query():重複鍵值違反了唯一性約束
- 12. 使用EF插入行時違反唯一鍵約束4
- 13. Django的:IntegrityError:重複鍵值違反唯一約束
- 14. Django - 重複鍵值違反了唯一約束條件
- 15. 即使沒有主鍵oracle也會違反唯一約束
- 16. 休眠:重複鍵值違反唯一約束
- 17. 如何解決django.db.utils.IntegrityError:重複鍵值違反唯一約束?
- 18. PostgreSQL的:錯誤重複鍵值違反唯一約束
- 19. 錯誤:重複的鍵值違反了唯一約束「xak1fact_dim_relationship」
- 20. 休眠 - 重複鍵值違反唯一約束
- 21. Django的:重複鍵值違反唯一約束
- 22. LEFT OUTER JOIN導致違反唯一鍵約束
- 23. 錯誤:重複鍵違反唯一約束「search6_idx1」
- 24. 重複的鍵值違反了唯一的約束,CakePHP
- 25. django.db.utils.IntegrityError:重複鍵值違反唯一約束「django_content_type_pkey」
- 26. Django的:重複鍵值違反唯一約束
- 27. django.db.utils.IntegrityError:重複鍵值違反唯一約束「auth_permission_pkey」
- 28. 違反了「唯一粒子屬性」
- 29. ORA-00001:違反的唯一約束(DEV.X_PK)
- 30. 合併導致違反唯一約束
檢測到[SQL Injection](http://www.w3schools.com/sql/sql_injection.asp)。使用命令參數 –
對不起,我不能讓你。具體幫助我,我是一個初學者。 – Ashiq
你可以點擊鏈接 –