سئوالاتی درباره sql

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
توی سی ویژال استودیو 2015 چجوری میشه برای دیتابیس مون نام جدول رو مشخص کنیم؟
من save رو میزنم و ذخیره میکنم ، نام جدول ست نمیشه!
 
درود

1)به Tools/Options/Database Tools/Table and Database Designers برو و تیک گزینه Prevent Saving Changes... را بردار.

2)به این قسمت برو : View/Server Explorer و در connection مورد نظرت روی tableای که میخوای کلیک راست و گزینه Open table definition را انتخاب کن. وقتی Design جدول ظاهر شد از اون قسمت پایین صفحه اسم جدول را تغییر بده و سپس دکمه update را کلیک کن:

391k9t3jqqm6.gif
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
درود

1)به Tools/Options/Database Tools/Table and Database Designers برو و تیک گزینه Prevent Saving Changes... را بردار.

2)به این قسمت برو : View/Server Explorer و در connection مورد نظرت روی tableای که میخوای کلیک راست و گزینه Open table definition را انتخاب کن. وقتی Design جدول ظاهر شد از اون قسمت پایین صفحه اسم جدول را تغییر بده و سپس دکمه update را کلیک کن:

391k9t3jqqm6.gif

ممنون استاد امیر
همون روز فهمیدم :green:
میگم یه فیلم آموزشی شیوا نمیدونی برای sql که با زبان سی شارپ باهاش ارتباط برقرار کنه و واقعا از صفر شروع کرده باشه؟
من حتی با لوا هم که کار میکردم (و میکنم) ، sql رو یاد نگرفتم :) یعنی این اولین باره که sql رو باهاش کار میکنم
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
آقا یک فیلدی که از نوع عدد گرفتیم داخل sql رو چجوری مقدار بدیم تو سی شارپ؟

کد:
string CommandText = "insert into myTable(Code,firstName,lastName,Mobile,Explan) values("+ Code + ")";

اگه Code بصورت عدد باشه ، که توی رشته جواب نمیده و سی شارپ قرمزش میکنه
 
آخرین ویرایش:

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
این کد چرا ارور میده؟ :

کد:
private void btnInsert_Click(object sender, EventArgs e)
        {
            string Code =  txtboxCode.Text ;
            string firstName = txtboxFirstName.Text;
            string lastName = txtboxLastName.Text;
            string Mobile = txtboxMobile.Text;
            string Explan = txtboxExplan.Text;


            SqlConnection ConnectDataBase = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="[email protected]"\Database1.mdf;Integrated Security=True;Connect Timeout=30");
            ConnectDataBase.Open();
                {
                string CommandText = "insert into myTable(Code,firstName,lastName,Mobile,Explan) values("+ Code +","+ firstName +","+lastName+","+Mobile+","+Explan+ ")";
                SqlCommand Command = new SqlCommand(CommandText, ConnectDataBase);
                Command.ExecuteNonQuery();
                }
            ConnectDataBase.Close();
        }

جدول ام هم فیلدهایی با همین عنوان Code,firstName,lastName,Mobile,Explan دارن که یا nvarchar ان یا text
ارورش در قسمت تابع Command.ExecuteNonQuery(); هه
مگه این تابع برای insert کردن استفاده نمیشه؟
try catch که کردم این پیامو میذه :

5a3n2wxnh8zy.jpg


یعنی میگه فیلدهای firstName و lastName و Explan مشکل دارن ولی چه مشکلی؟ 2 تای اولی nvarchar(30) و آخری از نوع text هه . جالب اینجاست که آخری رو قابلیت null شو فعال کردم ولی حتما باید بدم تا پر شه!!!
 
آخرین ویرایش:

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
آها یافتم . باید رشته ها توی علامت ' یا "\ قرار بگیرن مثلا باید بنویسیم :


کد:
"values('ali')"
or
"values(\"ali\")"

بنابراین وقتی یک متغییر یا همون شی ای از رشته رو میخوایم جایگزین کنیم ، باید در داخل علامت ' قرار بدیم یعنی باید بنویسیم :


کد:
"values('"+ firsteName +"')"

چون علامت ' جزئی از رشته ی دستور sql برای مشخص کردن رشته ی داخلی هست و نباشه نمیدونه کدوم رشته هست پس بجای CommandText باید بنویسم :


کد:
string CommandText = "insert into myTable(Code,firstName,lastName,Mobile,Explan) values('" + Code + "','" + firstName + "','" + lastName + "','" + Mobile + "','" + Explan + "')";

------------------

ولی جواب پست 4 رو هنوز نمیدونم؟
 
اولا - فیلم آموزشی ندارم همه رو از روی کتاب خوندم.:green:

دوما - بله باید رشته ها را در ' ' قرار بدی اما عدد نه.

سوما - احتمالا اسم ستونهات را اشتباه نوشتی
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
اولا - فیلم آموزشی ندارم همه رو از روی کتاب خوندم.:green:

دوما - بله باید رشته ها را در ' ' قرار بدی اما عدد نه.

سوما - احتمالا اسم ستونهات را اشتباه نوشتی

ممنون اوستا امیر
جواب پست شماره 4 چی؟
ستون ها (فیلدها) رو اشتباه ننوشتم
من نمیدونم چرا امثال مثل تو که بلدن ، فیلم درست نمیکنن که امثال مثل من راحت بشیم؟
:green: چیه؟ پول شو میدیم :green:
 
آخرین ویرایش:
ببین اسم ستونهات را که در دستور insert در سی شارپ اوردی باید با اسم ستونها توی دیتابیس مطابقت کنه حتی بزرگی و کوچیک بودن حروف هم تاثیر داره در غیراینصورت از insert کردن خبری نیست!

کی حوصله داره فیلم درست کنه!
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
آقا new query ای که من ایجاد میکنم با چیزی که توی نسخه ی 2010 اجرا میشه فرق داره انگار
توی 2010 یه صفحه ای باز میشه که تک تک چیزهایی که اعمال میکنن توی فیلدها و جدول ، کدش برای راهنمایی نوشته میشه ولی من توی ویژال استودیو 2015 که new query میزنم ، فقط یه صفحه ی خالی میاد!
چجوری میشه اون صفحه ی شبیه نسخه 2010 رو آورد؟
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون اوستا امیر
همچین گزینه ای برام نداره
بعد از زدن گزینه ی New Query یه دکمه ی Connect داره که میزنم یه صفحه ی دیالوگ باز میشه که نمیدونم اونجا باید تنظیماتی انجام بدم یا نه! و اگه بدم ، چی باید بدم؟ آخه یه قسمتی برای browse داره که میزنم صفحه ای برای browse برام باز نمیشه

 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
تو نسخه 2010 کوئری اش این جوری هه :

gme9j2z28ars.jpg




gq1f56ufquma.jpg


ولی توی 2015 که میزنم این صفحه ی سیاه میاد که البته کلمات کلیدی رو رنگی مینویسه ولی 2010 یه طراحی متفاوت ویژال داشت که کدها رو برای راهنمایی خودش مینوشت ولی من چجوری میتونم شبیه 2010 رو توی 2015 بیارم؟ :

8ull7g1nplcl.jpg

 
آخرین ویرایش:

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون
آها فهمیدم . توی نسخه ی 2015 برای Query Builder باید این طوری بریم :
بعد از ایجاد دیتابیس (فایل mdf) ، اول حتما باید پروژه ی مربوط به اون که دیتابیس توش استفاده شده یا کلا باید یک پروژه ی جدیدی رو باز کنیم (فایل با پسوند sln منظورم هست) تا بتونیم پنجره ی Data Source رو باز کنیم
بعد از باز کردن یا ایجاد کردن پروژه (sln) مورد نظر ، پنجره ی Data Source رو از منوی View>Other Windows>Data Source باز میکنیم و از این پنجره ی باز شده ، روی آیکودن Add New Data Source کلیک میکنیم . بعد از باز شدن پنجره ی ویزاد جدید ، گزینه ی DataBase و در صفحه ی بعد هم گزینه ی DataSet را کلیک میکنیم . در صفحه ی بعد هم نام فایل دیتابیس که با پسوند mdf رو قبلا ایجاد کردیم رو از کمبوباکس انتخاب میکنیم و اگه قبلا دیتابیس ای درست نکردیم ، در همین صفحه ، با استفاده از گزینه ی New Connection یه دیتابیس جدید میسازیم و بعد 2 بار next را میزنیم
در صفحه ی جدید همه ی گزینه ها را تیک میزنیم من جمله گزینه ی Table که حاوی نام جدولی هست که درست کردیم یا قبلا درست کرده بودیم و بعد هم Finish را میزنیم
حالا یه گزینه ای به همون پنجره ی Data Source اضافه میشه . روش کلیک راست کنین و گزینه ی Edit DataSet With Designer رو بزنین . صفحه ی جدیدی باز میشه که نام جدول و فیلدهایی که داده بودین ، توش میاد:

Query.JPG

روی نام جدول تون کلیک راست کنین (نام جدول من در بالا ، myTable هست) و Add>Query را بزنین
در اولین صفحه بزارین همون گزینه ی Use SQL Statment باشه تا کدهای sql رو بپذیره و next را بزنین
در صفحه ی بعدی از هر دستوری که میخوایت استفاده کنین (select و update و delete و insert) ، انتخابش کنین یکی رو و next را بزنین
و در صفحه ی بعد ، حالا اینجا مهمه که میتونین از Query Builder استفاده کنین . این بار بجای اینکه next رو بزنین ، گزینه ی Query Builder رو بزنین (فقط قبل از زدن دکمه ی Query Builder کدهای داخل کادر را پاک نکین که خودش نوشت) :
Query_2.JPG

در پنجره ی Query Builder باز شده میتونین کدهای sql رو بصورت ویژال که کار میکنین و نرم افزار تولید میکنه رو در دستورات sql تون کپی و استفاده کنین (قسمت آبی ، دستورات sql تولید شده توسط نرم افزار در شکل زیر هست که با تغییر بصورت ویژال ، این کدها هم تغییر میکنه) و با دکمه ی Execute Query (در پایین صفحه) میتونین نتیجه ی کدهاتون را ببینین در زیرش :
Query_3.JPG




https://www.youtube.com/watch?v=mnSNtt36D4w
 
آخرین ویرایش:

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
وقتی بصورت مستقیم خودم توی دیتابیس فارسی اطلاعات رو وارد میکنم (وقتی show table data رو میزنم و وارد میکنم) با فارسی مشکلی نداره ولی وقتی از توی فرم که فارسی مینویسم و وارد میکنم ، علامت سئوال بجاش میزاره . فیلدم هم از نوع nvarchar هه
مشکل از کجاست؟
 

the_king

مدیرکل انجمن
سلام
وقتی بصورت مستقیم خودم توی دیتابیس فارسی اطلاعات رو وارد میکنم (وقتی show table data رو میزنم و وارد میکنم) با فارسی مشکلی نداره ولی وقتی از توی فرم که فارسی مینویسم و وارد میکنم ، علامت سئوال بجاش میزاره . فیلدم هم از نوع nvarchar هه
مشکل از کجاست؟
اگر در پایگاه داده فیلد تون nvarchar ئه، رشته Unicode ئه، اما رشته ای که وارد پایگاه داده می کنید Unicode نیست. کدی که اطلاعات رو باهاش وارد می کنید ایراد داره.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
اگر در پایگاه داده فیلد تون nvarchar ئه، رشته Unicode ئه، اما رشته ای که وارد پایگاه داده می کنید Unicode نیست. کدی که اطلاعات رو باهاش وارد می کنید ایراد داره.

ممنون آقا علی
رشته unicode یعنی فقط انگلیسی ساپورت میکنه؟
من با همین کد معمولی از تکست باکس مورد نظر رشته رو گرفتم و توی دیتابیس ذخیره کردم . نمیدونم مشکل از کجاست . کدم اینه :

در رویداد کلیک دکمه ی درج :

کد:
private void btnInsert_Click(object sender, EventArgs e)
        {
            string Code =  txtboxCode.Text ;
            string firstName = txtboxFirstName.Text;
            string lastName = txtboxLastName.Text;
            string Mobile = txtboxMobile.Text;
            string Explan = txtboxExplan.Text;


            if (Code != "" && firstName != "")
            {
                ArrayList Value = new ArrayList();
                Value.Add(Code);
                Value.Add(firstName);
                Value.Add(lastName);
                Value.Add(Mobile);
                Value.Add(Explan);


                bool Check = DataBaseClass.Insert("myTable",Value);
                if (Check)
                    MessageBox.Show("عمل قرار دادن در جدول موفقیت آمیز بود");
                
            }
            else
                MessageBox.Show("دو فیلد اول نباید خالی باشه");
            
        }




و یک کلاس جداگانه :

کد:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;


namespace DataBase_1
{
    class DataBaseClass
    {
        /// <summary>
        /// نام جدول و مقدار را قرار میده
        /// </summary>
        public static bool Insert(string TableName, ArrayList Value)
        {
            SqlConnection sql_Connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + Application.StartupPath + @"\Database1.mdf;Integrated Security=True;Connect Timeout=30");


            try
            {
                sql_Connection.Open();
                //SqlCommand Class
                    SqlCommand sql_Command = new SqlCommand("insert into "+ TableName +" values ("+Value[0]+",'"+Value[1]+"','"+Value[2]+"','"+Value[3]+"','"+Value[4]+"')", sql_Connection);
                    sql_Command.ExecuteNonQuery();
                //
                sql_Connection.Close();
                return true;
            }
            catch (Exception Error)
            {
                sql_Connection.Close();
                MessageBox.Show(Error.Message);
                return false;
            }
        }






    }
}
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون آقا علی
فهمیدم
قبل از وارد کردن مقدار فیلد در CommandText ، یعنی قبل از علامت رشته که ' ' هست باید کلمه ی N بزرگ رو برای ساپورت فارسی بنویسیم یعنی در مثال بالا بجای کد :

کد:
SqlCommand sql_Command = new SqlCommand("insert into "+ TableName +" values ("+Value[0]+",'"+Value[1]+"','"+Value[2]+"','"+Value[3]+"','"+Value[4]+"')", sql_Connection);

باید کد زیر رو بنویسیم :

کد:
SqlCommand sql_Command = new SqlCommand("insert into "+ TableName +" values ("+Value[0]+",N'"+Value[1]+"',N'"+Value[2]+"',N'"+Value[3]+"',N'"+Value[4]+"')", sql_Connection);
 
آخرین ویرایش:

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
این کد من چرا اشکال داره؟ میخوام اطلاعاتش برام نمایش بده اما نمیشه :

کد:
public static bool ListRecord(string TableName)
        {
            SqlConnection sql_Connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + Application.StartupPath + @"\Database1.mdf;Integrated Security=True;Connect Timeout=30");
            try
            {
                sql_Connection.Open();
                //
                SqlCommand sql_Command = new SqlCommand("SELECT * FROM "+ TableName, sql_Connection);
                SqlDataReader ReadData = sql_Command.ExecuteReader();


                for (int i = 0; i < ReadData.FieldCount; i++)
                {
                    MessageBox.Show(ReadData[i].ToString());
                }


                //
                sql_Connection.Close();
                return true;
            }
            catch (Exception Error)
            {
                sql_Connection.Close();
                MessageBox.Show(Error.Message);
                return false;
            }
        }

پیام invalid attempt to read when no data is present رو میده ولی جدول من پره و 5 تا رکورد (سطر) داره
بیشتر مشکلم توی قسمت تیکه کد :

کد:
SqlDataReader ReadData = sql_Command.ExecuteReader();


                for (int i = 0; i < ReadData.FieldCount; i++)
                {
                    MessageBox.Show(ReadData[i].ToString());
                }

در بالاست که فک کنم اشکال ازش باشه اما نمیدونم چرا؟
 

جدیدترین ارسال ها

بالا