PDA

View Full Version : خطا در ارتباط با بانک اطلاعاتی sql server



hamhik
سه شنبه 16 آبان 1385, 15:28 عصر
من دارم یک قسمت از یک پروژه رو می نویسم که باید نام کاربری و پسورد کاربران را بفرستد: sql server بگیرد و به بانک اطلاعاتی
برنامه به این صورت است

Imports System.Data
Imports System.Data.SqlClient
که این دو خط را در ابتدای برنامه نوشتم یعنی قبل از خط مربوط به

Public Class WebForm1

بعد از نوشتن این دو خط خطوط زیر را به برنامه اضافه نمودم

Dim ds As New DataSet
Dim strsql As String
Dim strcon As String
Dim da As SqlDataAdapter
Dim con As SqlConnection
Dim newrow As DataRow
Dim cb As SqlCommandBuilder

و در قسمت مربوط به
Load_form
دستورات زیر را اضافه کردم.



strcon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=SHA-1CB531D2AE0;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SHA-1CB531D2AE0;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=nabe;"
strsql = "select * from users"
con.Open()
da = New SqlDataAdapter(strsql, con)
da.Fill(ds, "users")
حالا مشکل من تو همین چند تا خط هستش
چند تا سوال دارم


1-در مورد اون Provider من در کتابی خوانده بودم که نام تامین کننده oledb را مشخص می کندو این خاصیت در شی sqlconnection وجود ندارد بلکه در oledbconnection فراهم هست حالا اینو گفتم که اینو بگم که وقتی ما میریم توی asp.net و از طریق منوی tools
connect to database رو انتخاب می کنیم بعد از این که کار اتصال بانک اطلاعاتی مون رو انجام می دیم و می ریم تو خصوصیاتش در مقابلconnectionstrin کلمه provider را می بینیم خب مگه این یک sqlconnection نمی شه.البته من اون خطی رو که جلوی متغیر رشته ای strcon نوشتم از این جا گیرش اوردم ولی متاسفانه جواب نمیده
2-من جستجو کردم تو سایت تا یه connectionstring برای این اتصال پیدا کنم و دوستان گفته بودن که می تونید از یکی از این دو حالت استفاده کنید

"server=(local) ; data base=Northwind ; user id= ; password"
"server=(local) ; data base=Northwind ; integrated security=true ; trusted_connection=true"
من این کارو کردم اما متاسفانه باز با مشکل مواجه شدم و یک سری سوال هم در مورد این دوخط برام پیش اومد در مورد Server باید چی جلوش بنویسیم یعنی باید همون عبارتی رو بنویسم که وقتی sevice manager رو اجرا می کنم جلوی Server می یاد رو بنویسم یا غیر از اینه در مورد UID می خوام بدونم که من از کجا باید بفهمم که UID بانک اطلاعاتی و PASS آن چی هست و اگه بخوام یکی دیگه درست کنم باید چه جوری درست کنم البته موقعی که خودم داشتم یه USER جدید تعریف می کردم خطایی می داد مبنی بر این که در گروه شما همچین اسمی نیست و من دیگه ندونستم باید از چه راهی استفاده کنم.
حالا یه سوال داشتم من که دارم یه سایت طراحی می کنم SQL SERVER رو به صورت PERSONAL نصب کردم مشکلی که نداره؟
ممنون می شم کمکم کنید.

hamhik
چهارشنبه 17 آبان 1385, 01:50 صبح
البته اینم بگم که هنگام نصب sql server من در قسمت service setting دکمه رادیویی use the local system account را انتخاب نمودم و دکمه رادیویی دیگر با عنوان use a domain user account را که باید یک username و pass مشخص می کردیم را انتخاب نکردم یعنی این هم در این ارورها تاثیری داره چون همون طور که می دونیم در دستور مربوط به connectionstring باید uidوpwd را مشخص کنیم و با توجه به آن چه که خط اول گفتم اصلا من در هنگام نصب sql sever یوزر و پسورد را وارد ننمودم و حتلت دیگر آن را انتخاب نمودم.

SabaSabouhi
چهارشنبه 17 آبان 1385, 14:01 عصر
البته اینم بگم که هنگام نصب sql server من در قسمت service setting دکمه رادیویی use the local system account را انتخاب نمودم و دکمه رادیویی دیگر با عنوان use a domain user account را که باید یک username و pass مشخص می کردیم را انتخاب نکردم یعنی این هم در این ارورها تاثیری داره چون همون طور که می دونیم در دستور مربوط به connectionstring باید uidوpwd را مشخص کنیم و با توجه به آن چه که خط اول گفتم اصلا من در هنگام نصب sql sever یوزر و پسورد را وارد ننمودم و حتلت دیگر آن را انتخاب نمودم.

با سلام
نه دوست عزیز این به مشکل شما هیچ ربطى نداره از این قسمت خیالتون راحت باشه.

صبا صبوحى

SabaSabouhi
چهارشنبه 17 آبان 1385, 14:10 عصر
با سلام
یه سایتى هست به آدرس www.connectionstring.com (http://www.connectionstring.com) که حتماً یه سرى به اونجا بزنید. یه مرجع کامل و به درد بخور براى انواع Providerها.
در مورد درست کردن یک ConnectionString مختصر و مفید به SQL Server به این شکل عمل کنید:



public SqlConnection OpenSQLConnection(string pServerName, string pDBName, string pUserID, string pPassword){
string iStr = "Data Source=" + pServerName + ";Initial Catalog=" + pDBName +
";Persist Security Info=True;User ID=" + pUserID + ";Password=" + pPassword + ";Packet Size=4096";
SqlConnection cnn = new SqlConnection();
try{
cnn.ConnectionString = iStr;
cnn.Open();
}catch(){return null;}
return cnn;
}


این در موردى هست که شما بخواهید با یک UserID و Password به SQL متصل بشید که براى این باید Security در حالت Mixed Mode تنظیم شده باشد.
اگر Security در حالت Windows Authentication بود و یا شما مى‌خواهید با همان دسترسى‌هاى Windows به SQL متصل بشید جلوى "Persist Security Info" مقدار False بگذارید و قسمت‌هاى مربوط به UserID و Password را حذف کنید.

صبا صبوحى

hamhik
چهارشنبه 17 آبان 1385, 15:01 عصر
می خواستم بدونم که در مقابل data source اسم سروری رو بنویسیم که هنگامی که service manager را اجرا می کنیم در مقابل server نوشته یا غیر از این است؟
من این کد هایی که شما گفتی رو نوشتم ولی error می گیره که error زیر رو می ده


Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object

ssmehizadeh
جمعه 19 آبان 1385, 16:32 عصر
دوست عزیز
connection string رو اینطوری بنویس :

con.connnectionstring="server=(local);uid=username;pwd=password;database= database name"

موفق و سربلند باشید