![](/img/trans.png)
[英]C# - Microsoft sql database | Can't add new user on my e-contact app
[英]I can't add text to sql database on c#
我無法從SQL數據庫的網站添加文本
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString);
String insert = "INSERT INTO dbo.Table (Name,Surname,Email,Mobile,Telephone) VALUES (@name,@surname,@email,@mobile,@telephone)";
SqlCommand command = new SqlCommand(insert, connection);
command.Parameters.AddWithValue("@name", Name.Text);
command.Parameters.AddWithValue("@surname", Surname.Text);
command.Parameters.AddWithValue("@email", Email.Text);
command.Parameters.AddWithValue("@mobile", Mobile.Text);
command.Parameters.AddWithValue("@telephone", Telephone.Text);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
}
它向我顯示此錯誤的“ /”應用程序中的服務器錯誤。 關鍵字“表格”附近的語法不正確。
說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。
異常詳細信息:System.Data.SqlClient.SqlException:關鍵字'Table'附近的語法不正確。
源錯誤:
Line 25: command.Parameters.AddWithValue("@telephone", Telephone.Text);
Line 26: connection.Open();
Line 27: command.ExecuteNonQuery();
Line 28: connection.Close();
Line 29: }
在第27行出現錯誤,請幫助我...
數據庫服務器告訴您在不應該出現的地方使用了關鍵字Table
。 通過將其包裝在括號中,您可以使數據庫服務器確信Table
是Table
的名稱: [Table]
。
編輯:如果您使用的是MySQL,則可能要使用
String insert = "INSERT INTO `Table` (Name,Surname,E...
代替。
首先,請注意SqlConnection
是SQL Server的ADO.Net客戶端,而不是MySQL。 如果確實需要連接到MySQL,則需要: MySqlConnection
。
確保“ 表”是表的實際名稱。 如果是這樣,請像下面那樣逃避它: [表]
另外,不要忘記配置連接:
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString))
{
String insert = "INSERT INTO [dbo].[Table] (Name,Surname,Email,Mobile,Telephone) VALUES (@name,@surname,@email,@mobile,@telephone)";
SqlCommand command = new SqlCommand(insert, connection);
command.Parameters.AddWithValue("@name", Name.Text);
command.Parameters.AddWithValue("@surname", Surname.Text);
command.Parameters.AddWithValue("@email", Email.Text);
command.Parameters.AddWithValue("@mobile", Mobile.Text);
command.Parameters.AddWithValue("@telephone", Telephone.Text);
connection.Open();
command.ExecuteNonQuery();
}
問題在於Table是SQL中的保留字。 因此,系統認為這是命令而不是表的名稱。 如果要將表的名稱更改為MyTable,則代碼將正常工作(假設其他地方沒有其他錯誤)。
此代碼適用於測試數據庫和更新的表名稱:
INSERT INTO MyTable (Name,Surname,Email,Mobile,Telephone)
VALUES (@name,@surname,@email,@mobile,@telephone);
如果您想知道使用TSQL時應避免使用的單詞,請參見以下指向MSDN的鏈接: https : //msdn.microsoft.com/zh-cn/library/ms189822.aspx
盡管按照另一位受訪者的建議,您可以轉義使用表名,但最好不要這樣做。 這是一種非常不好的代碼氣味,以后可能導致許多其他問題和混亂。 取而代之的是,提供一個更有意義的名稱並描述其內容-在您的示例和所提供的列的情況下,“聯系方式”可能是更好的選擇?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.