یه دستور sql میخوام
سلام دوستان / دستور insert میخواستم ببینه تو جدول همین اطلاعاتی هست یا نه
اگه نبود اینسرت کنه اگه بود اضافه نکنه
جدول زیر رو در نظر بگیرید
دانشجو : شماره دانشجوریی ، نام ، نام خانوادگی ، رشته
با استاده از رویه های ذخیره شده
CREATE PROCEDURE CheckAndInsert(@id int , @name nvarchar(30) , @family nvarchar(30) , @major nvarchar(30))
AS
DECLARE @i int
set @i = SELECT * FROM Studemt WHERE Student.id=@id
if( @i =1 )
insert into Student values(@id , @name , @family , @major)
یا هم میشه از کد زیر استفاده کرد اینو تست کن ببین جواب میده بهت
CREATE PROCEDURE CheckAndInsert(@id int , @name nvarchar(30) , @family nvarchar(30) , @major nvarchar(30))
AS
INSERT INTO Students (id , name , family , Major ) VALUES ( @id , @name , @family , @major)
WHERE NOT EXISTS ( SELECT * FROM Student WHERE Student.id = @id )
خب برو تو برنامت چک کن اول یه دستور select بنویس و اونو ذخیره کن مثلا تو یه آرایه . بعد چک کن اگه آرایه طولش بزرگتر از صفره اونوقت insert کن.
سلام
من با دستور insert نمیتونم مقادیر متغییر ها رو بریزم تو دیتابیس! اشکال کدها چیه؟
دستور دوم که مقادیر استرینگ رو مستقیم وارد میکنم مشکلی نیست ، مشکلم با دستور اول هست که مقادیر رو از متغییرها میخوام وارد دیتابیس کنم کار نمیکنه
//
String a = "a";
String b = "b";
String c = "c";
String d = "d";
String e = "e";
// دو دستور اول کار نمیکنن ، مشکلشون چیه؟
G.database.execSQL("INSERT INTO contact (first_name ,last_name ,phone_number ,email ,notes) VALUES (" + a + "," + b + "," + c + "," + d + "," + e + ")");
G.database.execSQL("INSERT INTO contact (first_name ,last_name ,phone_number ,email ,notes) VALUES (''" + a + ",''" + b + ",''" + c + ",''" + d + ",''" + e + ")");
// این مشکلی نداره
G.database.execSQL("INSERT INTO contact (first_name ,last_name ,phone_number ,email ,notes) VALUES ('test_name' ,'test_family' ,'test_number' ,'test_email' ,'test_note')");
سلام
اینطور بنویس :
G.database.execSQL("INSERT INTO contact (first_name ,last_name ,phone_number ,email ,notes)
VALUES ('" + a + "','" + b + "','" + c + "','" + d + "','" + e + "')");
ببینید شما وقتی به این شکل استفاده میکنین :
"INSERT INTO contact (first_name ,last_name ,phone_number ,email ,notes) VALUES (" + a + "," + b + "," + c + "," + d + "," + e + ")")
دارید متغیر های a و b و c و .... رو با رشته جمع میکنید و مقدار داخلشون توی رشته میشینه . خب داخل متغییر a چیه ؟ یه چیزی مثل "ali" ، خب نتیجه جمع شدنش با رشته بالا میشه این :
"INSERT INTO contact (first_name ,last_name ,phone_number ,email ,notes) VALUES (ali,reza,mohammad)"
خب این اشتباهه دیگه ، شما باید مقادیری که واریز میکنی از نوع String باشه ولی چون نمیشه در دابل کوتیشن دوباره از دابل کوتیشن استفاده کرد باید این استرینگ ها با تک کوتیشن مشخص بشن .
در مورد ران تایم پرمیشن ، من نتونستم نسخه ای از کتابخونه library support رو گیر بیارم که بتونم اون کدها رو قرار بدم . فکر کنم اصلا موجود نیست . ولی اگه بخوام برنامه رو برای api زیر 23 منتشر کنم یه راه اینه که ببینی مجوز داریم یا نه ، اگه داشت که هیچ ، اما اگه نداشت به کاربر یه دیالوگ نشون میدیم که باید در تنظیمات ، پرمیشن رو فعال کنه و دیگه کاری نکنه . ولی نمیتونیم داخل برنامه مجوز بگیریم . یعنی دیالوگمون فقط اطلاع رسانی میکنه نه کار دیگه .
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
