آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

یه دستور sql میخوام

Hello World  10 سال پیش  9 سال پیش
0 0

سلام دوستان / دستور insert میخواستم  ببینه تو جدول همین اطلاعاتی هست یا نه 

اگه نبود اینسرت کنه اگه بود اضافه نکنه

 

+1 0
سلام ، خب در دستور rawQuery ، اطلاعات رو جلوی WHERE بذار ، بعد روی cursor بدست اومده شرط بذار که اگه چیزی نداشت ( اون اطلاعات رو نداشت ) INSERT کنه . if ( ! cursor.moveToNext) نمیدونم منظورت همین بود ؟ (10 سال پیش)
0 0
با خود sql نمیتونی برای insert شرط بذاری ... با کدنویسی باید یکبار بخونی و بعد چک کنی! (10 سال پیش)
0 0
آقا Reza میشه یه مثال ساده بزنی (10 سال پیش)
0 0
یه راهی که قبلا من استفاده کردم این بوده که چند ستون رو با هم unique میکردم و در این صورت اگه این چند تا فیلد دوباره عینن میخواستن اینسرت شن خود دیتا بیس نمیزاشت اینسرت شه(البته من تو mysql این کارو کردم نمیدونم sqlite هم این امکان رو داره یا نه) (9 سال پیش)
 برای این سوال 6 پاسخ وجود دارد.
پاسخ به سوال 
علی  10 سال پیش
+2 0

جدول زیر رو در نظر بگیرید
دانشجو : شماره دانشجوریی ، نام ، نام خانوادگی ، رشته
با استاده از رویه های ذخیره شده
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)
پاسخ به سوال 
علی  10 سال پیش
+1 0

یا هم میشه از کد زیر استفاده کرد اینو تست کن ببین جواب میده بهت

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 )
0 0
کار نکرد database.execSQL("INSERT INTO sound (x_title,x_url) VALUES ('name sound 1','url sound 1') WHERE NOT EXISTS ( SELECT x_title FROM sound)"); (10 سال پیش)
پاسخ به سوال 
علی  10 سال پیش
0 0

خب برو تو برنامت چک کن اول یه دستور select بنویس و اونو ذخیره کن مثلا تو یه آرایه . بعد چک کن اگه آرایه طولش بزرگتر از صفره اونوقت insert کن.

 
 
پاسخ به سوال 
oMiD4gApp  9 سال پیش
0 0

سلام

من با دستور 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')");
پاسخ به سوال 
Reza  9 سال پیش
+1 0

سلام

اینطور بنویس :

 
G.database.execSQL("INSERT INTO contact (first_name ,last_name ,phone_number ,email ,notes) 
VALUES ('" + a + "','" + b + "','" + c + "','" + d + "','" + e + "')");
0 0
دستت طلا برادر خستمون کرد..متوجه شدم با کد چیکار کردی اما میشه دلیلش رو بگی چرا اونطور کار نمیکرد اما اینطور کار مکینه؟ ضمنا اگه اون مسئله دریافت پرمیژن در اندروید بالای 6 رو تونستی تو اکلیپس حل کنی یه خبری بده(چون ظاهرا شمام مشکل داشتی) (9 سال پیش)
پاسخ به سوال 
Reza  9 سال پیش
+1 0

ببینید شما وقتی به این شکل استفاده میکنین :

 

 
"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 منتشر کنم یه راه اینه که ببینی مجوز داریم یا نه ، اگه داشت که هیچ ، اما اگه نداشت به کاربر یه دیالوگ نشون میدیم که باید در تنظیمات ، پرمیشن رو فعال کنه و دیگه کاری نکنه . ولی نمیتونیم داخل برنامه مجوز بگیریم . یعنی دیالوگمون فقط اطلاع رسانی میکنه نه کار دیگه .


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .