PDA

View Full Version : مبتدی: راهنمایی برای ایجاد یک نرم افزار ساده



Ship Storm
جمعه 13 بهمن 1391, 08:42 صبح
سلام دوستان
من قصد دارم یک برنامه بنویسم که روی یکسری اطلاعات اعمال ویرایش و پاک کردن و ثبت اطلاعات جدید و جستجو رو داشته باشه تا حدودی به نحوه کار آشنایی دارم ولی چند تا سوال داشتم در این زمینه
---
1- من از نرم افزار Visual Studio 2010 دارم استفاده میکنم و بانک اطلاعاتی که استفاده میکنم Microsoft SQL Server 2008 R2 هستش و بانک و جداول خودم رو تو اون ساختم و ارتباط دادم به پروژه ، سوال من اینجاست که من وقتی این نرم افزار رو به اتمام برسونم برای اجرای اون تو یک سازمان به مشکل بر نمیخورم ؟ منظورم اینه که نوع SQL ای که استفاده میکنم و جداولی که از اونجا ارتباط دادم به برنامه بعدا که بخوام انتقالش بدم روی یک سیستم دیگه مشکل بر نمیخوره ؟

2-من یک کدی نوشتم به این شرح برای چک کردن نام کاربری و رمز عبور :


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
s1 = "data source=HAMED-PC;initial catalog=Hospital;integrated security=True;"
con = New SqlConnection(s1)
con.Open()
s2 = "select * from Login where UserName='" & txtUsername.Text & "'"
da = New SqlDataAdapter(s2, con)
da.Fill(ds, "Login")
If ds.Tables("Login").Rows.Count = 0 Then
MsgBox("Invalid UserName", MsgBoxStyle.Critical, "Dear User ")
Exit Sub
End If
dr = ds.Tables("Login").Rows.Item(0)
If Trim(dr.Item("Password")) <> txtPassword.Text Then
MsgBox("Invalid Password", MsgBoxStyle.Critical, "Dear User")
Exit Sub
End If
MsgBox("Welcome")
Form3.Show()
Me.Visible = False
End Sub



و این بخوبی داره کار میکنه ولی بعدا که بخوام انتقال بدم آیا این قسمت data source=HAMED-PC برام مشکل ساز نمیشه ؟ چون همه جا که اسم سرور این نیست ، درسته ؟


3- یک قست دارم برای ویرایش رمز عبور و کدی که نوشتم اینطوریه ولی ایراد داره چون تو دیتابیس میره و یک خط جدید ایجاد میکنه ، چطور باید تعریف کنم که نام کاربری که وارد شده تو Textbox1 رو بره تو دیتابیس پیدا کنه و فقط پسورد اون رو ویرایش کنه ؟


Dim con As New SqlConnection()
con.ConnectionString = "server=HAMED-PC;database=Hospital;Integrated security=yes"
con.Open()
Dim com As New SqlCommand()
com.Connection = con
Dim sql As String
sql = "UPDATE Login SET(UserName,Password) VALUES ('{0}','{1}')"
sql = String.Format(sql, txtUsername.Text, txtNewPassword.Text)
com.CommandText = sql
'com.ExecuteNonQuery()
MsgBox("SAVED")



ممنون و باتشکر

R_Rajaee_Rad
جمعه 13 بهمن 1391, 08:58 صبح
من وقتی این نرم افزار رو به اتمام برسونم برای اجرای اون تو یک سازمان به مشکل بر نمیخورم ؟ منظورم اینه که نوع SQL ای که استفاده میکنم و جداولی که از اونجا ارتباط دادم به برنامه بعدا که بخوام انتقالش بدم روی یک سیستم دیگه مشکل بر نمیخوره ؟
اگر از دیتابیستون یه اسکریپت بسازید احتمالا مشکلی پیش نمیاد

و این بخوبی داره کار میکنه ولی بعدا که بخوام انتقال بدم آیا این قسمت data source=HAMED-PC برام مشکل ساز نمیشه ؟ چون همه جا که اسم سرور این نیست ، درسته ؟
این بستگی به سیستمی که داره ازش استفاده میکنه داره...اگر برنامه برای یه سیستم مستقل و غیر شبکه ای هست باید datasource روی local بزارید

data source=(local)
اگر برنامه برای چند سیستم که با یه شبکه بهم متصل اند ساخته شده قضیه فرق میکنه


3- یک قست دارم برای ویرایش رمز عبور و کدی که نوشتم اینطوریه ولی ایراد داره چون تو دیتابیس میره و یک خط جدید ایجاد میکنه ، چطور باید تعریف کنم که نام کاربری که وارد شده تو Textbox1 رو بره تو دیتابیس پیدا کنه و فقط پسورد اون رو ویرایش کنه ؟
با استفاده از یه select Sql میتونید چک کنید همچین یوزری وجود داره یا نه
پیشنهاد میکنم موقع ذخیره پسورد توی بانک از الگوریتم های hashing استفاده کنید تا پسورد توی بانک به صورت ناخوانا دربیاد
در ضمن راه های بهتر برای دسترسی به داده ها مثل Entity Freamwork اومده که راحت تر میتونید به بانک وصل بشید و خوانایی برنامه رو ببرید بالا...توی انجمن رو یه سرچ بزنید پشیمون نمی شید

Ship Storm
جمعه 13 بهمن 1391, 10:03 صبح
ممنون
نمونه کدی که این کار رو انجام بده هست من بتونم با برنامه خودم تطبیق بدم ؟

mehdi_79
جمعه 13 بهمن 1391, 12:56 عصر
شما در قسمت settings پارامتری به نام sqlpath از نوع string تعریف می کنید و برای برنامه تحت شبکه IP کامپیوتر دارای بانک اطلاعاتی و برای برنامه معمولی 127.0.0.1 را به مقدار پارامتر تخصیص می دهید
سپس به جای سطر 2 سطر زیر را جایگزین کنید

s1 = "data source=" & my.Settings.sqlpath & " ;initial catalog=Hospital;integrated security=True;"

Ship Storm
جمعه 13 بهمن 1391, 17:32 عصر
برای قسمت ویرایش رمز عبور چطور باید کد بنویسم که بره و فقط همون یوزر رو ویرایش بکنه و یوزر جدید نسازه؟

mehdi_79
جمعه 13 بهمن 1391, 17:49 عصر
تا چایی که متوجه شدم یک جدول به نام Login دارید با ستون های UserName و Password
به جای سطر 7 و 8 کد زیر را بنویسید

Sql = "UPDATE Login SET Password = '" & txtNewPassword.Text & "' WHERE (UserName = '" & txtUsername.Text & "')"

Ship Storm
جمعه 13 بهمن 1391, 20:37 عصر
تا چایی که متوجه شدم یک جدول به نام Login دارید با ستون های UserName و Password
به جای سطر 7 و 8 کد زیر را بنویسید

Sql = "UPDATE Login SET Password = '" & txtNewPassword.Text & "' WHERE (UserName = '" & txtUsername.Text & "')"




آقا ممنونم خیلی خوب بود و به درستی جواب داد

Ship Storm
جمعه 13 بهمن 1391, 21:26 عصر
من یک List view دارم که اطلاعات بانک خودم رو توش نمایش میده
وقتی روی هر سطرش کلیک میکنم اطلاعات اون سطر توی Textbox های مرتبط نمایش داده میشه
من تو فرم خودم یک PictureBox هم قرار دادم
چطور میتونم وقتی روی یک سطر کلیک کردم تو اون Picturebox من عکس ذخیره شده تو بانک رو نمایش بده ؟

این هم تیکه کدی که من نوشتم برای نمایش اطلاعات که بخوبی کار میکنه فقط میخوام عکس مرتبط رو هم تو این Picturebox من نمایش بده:



Private Sub ListView1_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedE ventArgs) Handles ListView1.ItemSelectionChanged
TextBox3.Text = e.Item.SubItems(1).Text
TextBox4.Text = e.Item.SubItems(2).Text
If e.Item.SubItems(3).Text = "Male" Then
RadioButton3.Checked = True
Else
RadioButton4.Checked = True
End If
PictureBox3.ImageLocation = e.Item.SubItems(4).Text
End Sub



اینم عکس از پروژه در حال اجرا برای اینکه بهتر قضیه رو برداشت کنید
99399