我得到的錯誤:未能參數值從SqlParameter的轉換爲字符串
Failed to convert parameter value from SqlParameter to String.
我通過:
TestUsername,
TestPassword,
TestFirstName,
TestLastName,
[email protected]
代碼:
try
{
Console.WriteLine("Inputs: Username, Password, First Name, Last Name, Email");
Console.WriteLine("Username: ");
string usernameInput = Console.ReadLine();
Console.WriteLine("Password: ");
string passwordInput = Console.ReadLine();
Console.WriteLine("First Name: ");
string firstNameInput = Console.ReadLine();
Console.WriteLine("Last Name: ");
string lastNameInput = Console.ReadLine();
Console.WriteLine("Email: ");
string emailInput = Console.ReadLine();
SqlCommand createLogin = new SqlCommand("INSERT INTO [dbo].[Users] VALUES ('@username', '@password', '@firstname', '@lastname', '@email')", myConnection.SqlConnection);
SqlParameter usernameParam = createLogin.Parameters.Add("@username", SqlDbType.VarChar, 40);
SqlParameter passwordParam = createLogin.Parameters.Add("@password", SqlDbType.VarChar, 50);
SqlParameter firstNameParam = createLogin.Parameters.Add("@firstname", SqlDbType.VarChar, 40);
SqlParameter lastNameParam = createLogin.Parameters.Add("@lastname", SqlDbType.VarChar, 40);
SqlParameter emailParam = createLogin.Parameters.Add("@email", SqlDbType.VarChar, 40);
usernameParam.Value = usernameInput;
passwordParam.Value = passwordInput;
firstNameParam.Value = firstNameInput;
lastNameParam.Value = lastNameInput;
emailParam.Value = emailParam;
createLogin.ExecuteNonQuery();
Console.WriteLine("Username: {0} with Password: {1} created.", usernameInput, EncDec.Decrypt(passwordInput, "testEncryption"));
}
catch (Exception CreateLoginException)
{
Console.WriteLine(CreateLoginException);
}
還有就是使用'Add'並且還通過使用'AddWithValue'不會解決問題的沒有問題。 –
另外它會導致帶有字符串長度的'nvarchar',並且OP使用具有預設長度的'varchar'。如果您的代碼需要使用nvarchar以外的內容,或者可能假設該變量有更多空間對字符串執行編輯,則這可能會導致問題。 –
這解決了我收到的錯誤,謝謝。 –