כמה שאלות בasp.net

svoivandim

New member
כמה שאלות בasp.net

1: אני רוצה לעשות log off לאתר שמזהה את המשתמש לפי הCOOKIES והSESSION האם נכון לעשות את הדבר הבא:
void btnExit_Click(object sender, EventArgs e) { //clearing session Session.Clear(); //Create new cookie that will disepear in some second HttpCookie PersonalProfileCookie = new HttpCookie("PersonalProfile"); PersonalProfileCookie.Value ="cc"; PersonalProfileCookie.Expires = DateTime.Now.AddSeconds(0); Response.Cookies.Add(PersonalProfileCookie); btnExit.Visible=false; Response.Redirect("http://localhost/Default.aspx"); }​
נפתרתי מהעוגיה והSESSION האם יש דרך נוספת לעשות זאת?? שאלה שניה: נניח יש לי את הדבר הבא:
System.Data.DataSet MyQueryMethod(int memID, string memProfile) { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\Inetpub\\wwwr" + "oot\\xxx\\xxx.mdb"; System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString); string queryString =@"SELECT [Members].[MemID], [Members].[MemProfile] FROM [Members] WHERE (([Members].[MemID] = @MemID) AND ([Members].[MemProfile] = @MemProfile))"; System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); dbCommand.CommandText = queryString; dbCommand.Connection = dbConnection; System.Data.IDataParameter dbParam_memID = new System.Data.OleDb.OleDbParameter(); dbParam_memID.ParameterName = "@MemID"; dbParam_memID.Value = memID; dbParam_memID.DbType = System.Data.DbType.Int32; dbCommand.Parameters.Add(dbParam_memID); System.Data.IDataParameter dbParam_memProfile = new System.Data.OleDb.OleDbParameter(); dbParam_memProfile.ParameterName = "@MemProfile"; dbParam_memProfile.Value = memProfile; dbParam_memProfile.DbType = System.Data.DbType.String; dbCommand.Parameters.Add(dbParam_memProfile); System.Data.IDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter(); dataAdapter.SelectCommand = dbCommand; System.Data.DataSet dataSet = new System.Data.DataSet(); dataAdapter.Fill(dataSet); return dataSet; }​
הרי אם הוא לא ימצא במסד הבתונים את ההתאמה אז זה אומר שDATASET ריק?? איך אני בודק אם מצא או לא מצא?? כלומר אפשר לבדוק אם הDATASET ריק?? תודה!!
 

itaym02

New member
אפשרות אחת

אתה יכול לשאול ישירות על הטבלה
if (DS.Tables["TableName"].Rows.Count==0) ... ...​
 

svoivandim

New member
סבבה זה עובד! אבל יש בעיה אחרת

והיא שאני לא יכול לתת שם לטבלה, כלומר כאשר אני רושם כך :
dataAdapter.Fill(dataSet,"Economize"); //dataAdapter.Fill(dataSet); //if (dataSet.Tables[0].Rows.Count == 0) if (dataSet.Tables["Economize"].Rows.Count == 0) { return false; } else { return true; } } ]​
אני מקבל את השגיא הבאה:
Compiler Error Message: CS1501: No overload for method 'Fill' takes '2' arguments Source Error: Line 31: dataAdapter.SelectCommand = dbCommand; Line 32: System.Data.DataSet dataSet = new System.Data.DataSet(); Line 33: dataAdapter.Fill(dataSet,"Economize"); Line 34: //dataAdapter.Fill(dataSet); Line 35: Source File: c:\Inetpub\wwwroot\vad.aspx Line: 33​
מה הבעיה??
 

itaym02

New member
בעיה בעייתית - מישהו?

אצלי זה עובד. האם יתכן שיש לך גירסת B של FRAMEWORK? X FILES
 

svoivandim

New member
הנה כל הקוד

// chek if user olready member (return true if positive) bool chekIfUserExist(int password, string profile) { string connectionString = ConfigurationSettings.AppSettings["ConnectionString"]; System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString); string queryString = @"SELECT [Members].[MemID], [Members].[MemProfile] FROM [Members] WHERE (([Members].[MemID] = @Password) AND ([Members].[MemProfile] = @Profile))"; System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); dbCommand.CommandText = queryString; dbCommand.Connection = dbConnection; System.Data.IDataParameter dbParam_password = new System.Data.OleDb.OleDbParameter(); dbParam_password.ParameterName = "@Password"; dbParam_password.Value = password; dbParam_password.DbType = System.Data.DbType.Int32; dbCommand.Parameters.Add(dbParam_password); System.Data.IDataParameter dbParam_profile = new System.Data.OleDb.OleDbParameter(); dbParam_profile.ParameterName = "@Profile"; dbParam_profile.Value = profile; dbParam_profile.DbType = System.Data.DbType.String; dbCommand.Parameters.Add(dbParam_profile); System.Data.IDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter(); dataAdapter.SelectCommand = dbCommand; System.Data.DataSet dataSet = new System.Data.DataSet(); //dataAdapter.Fill(dataSet, "Economize"); dataAdapter.Fill(dataSet); // if (dataSet.Tables["Economize"].Rows.Count == 0) if (dataSet.Tables[0].Rows.Count == 0) //if sum of row==0 so this means that recordset is empty //that mean than the user is not have membership { return false; //there is no such user registered in database } else { return true; } }​
עלפניו לא צריכה להיות בעיה,אבל בכל זאת אני מקבל את השגיאה שציינתי
 

svoivandim

New member
שיניתי לds

אין שינו עדין מקבך את השגיאה:
Compiler Error Message: CS1501: No overload for method 'Fill' takes '2' arguments Source Error: Line 121: dataAdapter.SelectCommand = dbCommand; Line 122: System.Data.DataSet ds = new System.Data.DataSet(); Line 123: dataAdapter.Fill(ds, "Economize"); Line 124: //dataAdapter.Fill(ds); Line 125: Source File: c:\Inetpub\wwwroot\Login.aspx.cs Line: 123​
מבחינת הקוד נראה לי הכל תקיןת אני לא מבין מה הקומפיילר רוצה ממני!
 
נראה לי ראיתי משהו,אבל לא בטוח

1 System.Data.IDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter(); 2 System.Data.OleDb.OleDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter();​
אני לא מכיר את רכיב של זה שמתחיל בI ויכול להיות שבאמת הfill שלו לא מקבל 2 ארגומנטים. אני משתמש ב2 ושם לא צריכה להיות בעייה
 

itaym02

New member
הכן זו הבעיה

IDBDATAADAPTER הוא אינטרפייס ולא אובייקט (לא מדוייק, אבל לצורך העיניין...). תשתמש במה שקורניליוס נתן לך, אם יש לך השלמה אוטומטית תראה שהיא לא נותנת לך ליצור NEW לIDBDATAADAPTER. אם אתה ניגש למסד MSSQL תשתמש בSQLDATAADAPTER.
 
למעלה