我正在使用SQL Server數據庫,並且有一個名爲Cell(VARCHAR)數據類型的列。在使用reader.Read()
進行閱讀時,出現轉換錯誤。任何人都可以善意解釋錯誤的原因嗎?varchar值'5566778891'的轉換溢出了一個int列
這是我的代碼:
string myConnection = dbController.connectionString;
string query1 = "SELECT ID, Name from Manager Where Cell = " + managerNo.Text;
using (var conn = new SqlConnection(myConnection))
using (var cmd = new SqlCommand(query1, conn))
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
managerID = reader.GetString(0);
mgrID.Text = managerID;
managerNames.Text = reader.GetString(1);
}
conn.Close();
}
我讀從一個文本框(managerNo)的值。我已經測試了SQL Server Management Studio中的查詢操作:
select Name, DOB
from Contact
where Cell = 1233453411
當我使用Cell = 1233453411
不作爲字符串我得到的轉換誤差值,但是使用Cell = '1233453411'
作爲字符串結果是牽強。
這是什麼原因以及如何解決這個問題。
謝謝。
什麼Manager.Cell的數據類型? –
@DourHighArch其varchar(最大) – EL323
您的查詢需要在'managerNo.Text'周圍添加引號 - 就像您手動運行查詢時一樣。但是,您的代碼非常容易受到SQL注入的影響,您應該調查。 – Rob