#c# #sql #webmatrix
#c# #sql #webmatrix
Вопрос:
Не удается преобразовать тип ‘WebMatrix.Data.DynamicRecord’ в ‘int’ исключение появляется, когда я пытаюсь вывести значение метода QueryValue в int?
public class SaveCustomerData : IDisposable
{
private readonly string _connectionString;
private readonly Database _db;
public SaveCustomerData(string connectionString)
{
_connectionString = connectionString;
_db = Database.Open(connectionString);
}
public void Insert(string fname, string lname, string phone, string cellno, DateTime dob, string gender, string address, string address2, string creditno, string city, string postalcode, string email) {
var uid = Convert.ToInt32(_db.QuerySingle("SELECT UserID FROM UserProfile WHERE Email=@0",email));
_db.Execute("INSERT INTO Customer_Table (customer_fname, customer_lname, customer_phone, customer_mobile, customer_dob, customer_gender, customer_address, customer_address2, customer_credit_no, customer_city, customer_postal, UserID) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12)",
fname, lname, phone, cellno, dob, gender, address, address2, creditno, city, postalcode, uid);
Ответ №1:
Вы должны использовать это:
_db.QuerySingle("SELECT UserID FROM UserProfile WHERE Email=@0",email)
.Item["UserID"];
для того, чтобы вы получили возвращаемое значение UserID
. Вы получили ошибку, которую вы опубликовали в своем вопросе, потому что ваш запрос возвращает объект типа WebMatrix.Data.DynamicRecord
, который
Представляет запись данных с использованием пользовательского дескриптора типа и возможностей среды выполнения динамического языка (DLR).
как указано здесь, а не значение UserID
.
Чтобы получить значение определенного столбца в записи, которое возвращается после выполнения _db.QuerySingle(...)
, у вас есть два варианта:
Item[Int32]
,
Возвращает значение столбца в экземпляре DynamicRecord с использованием указанного индекса.
и
Item[string]
,
Возвращает значение столбца в экземпляре DynamicRecord с использованием указанного имени.
Комментарии:
1. Я только что обновил свой пост. Вы можете принять значение, используя [0], которое вернет вам значение в столбце с индексом 0, или вы можете получить значение, используя имя столбца.