October 28, 2004

SQLServer2000 & C# - Error

If you have these problems after the connecting to SQLServer check these
  • Check your Service Manager for runnig.
  • Do you used of Data Source=NET101 in ConnectionString? (NET101 is my computer name)
  • Do you used of SERVER=localhost in ConnectionString?
  • Test IP for connection 127.0.0.1
  • Run Enterprise Manager > (local)(WindowsNT) > (RightClick)Properties > Security > (select) SQL Server and Windows
  • Add ASPNET user that is predefine user to users at Enterprise Manager and set full accessibility to tables and Stored Procedures


Login failed for user NT AUTHORITY\NETWORK SERVICE
Server Error in '/WebApplication1' Application.
--------------------------------------------------------------------------------
Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.
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.Data.SqlClient.SqlException: Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.
Source Error:
Line 28: private void Page_Load(object sender, System.EventArgs e)
Line 29: {
Line 30: sqlDataAdapter1.Fill(dataSet11, "_UNPass");
Line 31: DataGrid1.DataBind();
Line 32: }
Source File: c:\inetpub\wwwroot\webapplication1\webform1.aspx.cs Line: 30
Stack Trace:
[SqlException: Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.]
System.Data.SqlClient.ConnectionPool.GetConnection(Boolean& isInTransaction) +472
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) +372
System.Data.SqlClient.SqlConnection.Open() +384
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState)
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
WebApplication1.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\webapplication1\webform1.aspx.cs:30
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET
Version:1.1.4322.573


Server Error in '/WebApplication1' Application.
--------------------------------------------------------------------------------
General network error. Check your network documentation.
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.Data.SqlClient.SqlException: General network error. Check your network documentation.
Source Error:
Line 29: {
Line 30: //sqlConnection1.Open();
Line 31: sqlDataAdapter1.Fill(dataSet11, "_UNPass");
Line 32: DataGrid1.DataBind();
Line 33: //sqlConnection1.Close();
Source File: c:\inetpub\wwwroot\webapplication1\webform1.aspx.cs Line: 31
Stack Trace:
[SqlException: General network error. Check your network documentation.]
System.Data.SqlClient.ConnectionPool.GetConnection(Boolean& isInTransaction) +474
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) +372
System.Data.SqlClient.SqlConnection.Open() +384
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +44
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +36
WebApplication1.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\webapplication1\webform1.aspx.cs:31
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET
Version:1.1.4322.573


- احتمالا Service Manager رو بالا نیاوردید.
- ConnectionString تون مشکل داره. مثلا برای کامپیوتری با نام NET101 این رو بد نیست بذارید. Data Source=NET101
- فکر کنم با افزودن SERVER=localhost به فیلد ConnectionString کامپوننت SqlConnection حله (البته برای کاربرهای خونگی)
- به جای نام کامپیوتر (اگه تو شبکه هم هست) بهتره که از IP استفاده کنید مثل 127.0.0.1
- گرچه برای من این جوری دستکاری تو Enterprise Manager حل شد :
Run Enterprise Manager>(local)(WindowsNT)>(RightClick)Properties>Security>(select) SQL Server and Windows
- افزودن USER ی به نام ASPNET اگه تو لیست user های Enterprise Manager هست بد نیست گرچه من userی به نام IIS... رو هم اضافه کردم ولی همون اولی کافیه که اضافه کنید و به لیست user های table دیتابیستون اضافش کنید و بهش هر دسترسی که می خواد بدین تا کارتون بگذره ;-)

SQLServer2000 & C# - Code

I hope that these codes help you for connect to SQLServer2000 (with SP3) by C#.

این ها چند تا تیکه کد برای دسترسی به پایگاه های داده مبتنی بر 2000 SQLServer از طریق C# و dotNetFrameWork1.1 هستن.
راستش مجبور شدم برای یه کار عجله ای 1 روزه (که 2 روز طول کشید) بدون کتاب SQLServer، StoredProcedure رو مطالعه کنم و روش های مختلف ارتباط مابین این DBMS و #C رو پیدا کنم. (این یعنی اگه DB کارنکردین نگران نباشین سخت که نیست هیچ ...)
این تیکه کدها در انتها خیلی روند کاری رو تسریع کردن ممکنه به درد بخوره گرچه می شه هر جایی به راحتی پیداشون کرد مثل MSDN.

<Binding SQL Data to a DataGrid>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Authors");
MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView;
MyDataGrid.DataBind();

<Binding SQL Data to a SqlDataReader>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes");
SqlCommand myCommand = new SqlCommand("select * from Authors", myConnection);
myConnection.Open();
SqlDataReader dr = myCommand.ExecuteReader();
MyDataGrid.DataSource = dr;
MyDataGrid.DataBind();
myConnection.Close();

<HELP>
MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView;
برابر است با (Equal with)
MyDataGrid.DataSource=ds;
MyDataGrid.DataMember="Authors";

<Performing a Parameterized Select>
String selectCmd = "select * from Authors where state = @State";
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd, myConnection);
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@State", SqlDbType.NVarChar, 2));
myCommand.SelectCommand.Parameters["@State"].Value = MySelect.Value;
DataSet ds = new DataSet();
myCommand.Fill(ds, "Authors");
MyDataGrid.DataSource= ds.Tables["Authors"].DefaultView;
MyDataGrid.DataBind();

<Inserting Data in a SQL Database>
String insertCmd = "insert into Authors (au_id, au_lname, au_fname, phone, address, city, state, zip, contract) values (@Id, @LName, @FName, @Phone, @Address, @City, @State, @Zip, @Contract)";
SqlCommand myCommand = new SqlCommand(insertCmd, myConnection);
myCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.NVarChar, 11));
myCommand.Parameters["@Id"].Value = Server.HtmlEncode(au_id.Value);
myCommand.Parameters.Add(new SqlParameter("@LName", SqlDbType.NVarChar, 40));
myCommand.Parameters["@LName"].Value = Server.HtmlEncode(au_lname.Value);
myCommand.Parameters.Add(new SqlParameter("@FName", SqlDbType.NVarChar, 20));
myCommand.Parameters["@FName"].Value = Server.HtmlEncode(au_fname.Value);
myCommand.Parameters.Add(new SqlParameter("@Phone", SqlDbType.NChar, 12));
myCommand.Parameters["@Phone"].Value = Server.HtmlEncode(phone.Value);
myCommand.Parameters.Add(new SqlParameter("@Address", SqlDbType.NVarChar, 40));
myCommand.Parameters["@Address"].Value = Server.HtmlEncode(address.Value);
myCommand.Parameters.Add(new SqlParameter("@City", SqlDbType.NVarChar, 20));
myCommand.Parameters["@City"].Value = Server.HtmlEncode(city.Value);
myCommand.Parameters.Add(new SqlParameter("@State", SqlDbType.NChar, 2));
myCommand.Parameters["@State"].Value = state.Value;
myCommand.Parameters.Add(new SqlParameter("@Zip", SqlDbType.NChar, 5));
myCommand.Parameters["@Zip"].Value = Server.HtmlEncode(zip.Value);
myCommand.Connection.Open();
try
{
myCommand.ExecuteNonQuery();
Message.InnerHtml = "<b>Record Added</b><br>" + insertCmd.ToString();
}
catch (SqlException e)
{
if (e.Number == 2627)
Message.InnerHtml = "ERROR: A record already exists with the same primary key";
else
Message.InnerHtml = "ERROR: Could not add record, please ensure the fields are correctly filled out";
Message.Style["color"] = "red";
}
myCommand.Connection.Close();
BindGrid();

<Working with Master-Detail Relationships>
<ASP:DataGrid id="MyDataGrid" runat="server" Width="800" BackColor="#ccccff" BorderColor="black" ShowFooter="false" CellPadding=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" DataKeyField="au_id">
<Columns>
<asp:HyperLinkColumn DataNavigateUrlField="au_id" DataNavigateUrlFormatString="datagrid13_details.aspx?id={0}" Text="Get Details"/>
</Columns>
</ASP:DataGrid>

<Writing and Using Stored Procedures>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=northwind;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("Ten Most Expensive Products", myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds = new DataSet();
myCommand.Fill(ds, "Products");
MyDataGrid.DataSource=ds.Tables["Products"].DefaultView;
MyDataGrid.DataBind();

<Writing and Using Stored Procedures with Parameters(1)>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=northwind;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("SalesByCategory", myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@CategoryName", SqlDbType.NVarChar, 15));
myCommand.SelectCommand.Parameters["@CategoryName"].Value = SelectCategory.Value;
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@OrdYear", SqlDbType.NVarChar, 4));
myCommand.SelectCommand.Parameters["@OrdYear"].Value = SelectYear.Value; DataSet ds = new DataSet();
myCommand.Fill(ds, "Sales");
MyDataGrid.DataSource=ds.Tables["Sales"].DefaultView;
MyDataGrid.DataBind();

<Writing and Using Stored Procedures with Parameters(2)>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=northwind;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("Employee Sales By Country", myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@Beginning_Date", SqlDbType.DateTime));
myCommand.SelectCommand.Parameters["@Beginning_Date"].Value = BeginDate.SelectedDate;
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@Ending_Date", SqlDbType.DateTime));
myCommand.SelectCommand.Parameters["@Ending_Date"].Value = EndDate.SelectedDate; DataSet ds = new DataSet();
myCommand.Fill(ds, "Sales");
MyDataGrid.DataSource=ds.Tables["Sales"].DefaultView;
MyDataGrid.DataBind();



October 23, 2004

Confirmation in ASP.Net DataGrid

- How can I display a dialog box to force users to confirm before a critical task (i.e., a record deletion) starts?
If you like, you can add the MessageBox to DataGrid's button you must that adds a DHTML OnClick attribute that executes the following JavaScript statement.
You must that combine your DataGrids with Client-side Script for Advanced Customizations.
this so easy with follow under method.

1- DataGrid>Properties>Events
2- (double click) DeleteCommand (for add event)
3- (double click) ItemDataBound (for add event)
4- (select the datagrid from aspx file interface) RightClick>PropertyBuilder>Columns>Selected columns>Delete>(below blue link "convert this column into a Template Column")Click>OK
5- goto source code(aspx.cs) and edit DataBound function
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
  if (e.Item.ItemType == ListItemType.Item e.Item.ItemType==ListItemType.AlternatingItem)
  {
    LinkButton bd = ((LinkButton)e.Item.FindControl("LinkButton1"));
    bd.Attributes.Add("onclick", "return confirm(\"آیا از حذف این ردیف مطمئن هستيد؟\");");
  }
}
در هنگام کار با ASP.Net DataGrid نمایش یه دایلوگ باکس در هنگام حذف، ویرایش و ... می تونه بسیار ایده آل (یا طرف درخواست کاربر) باشه.
گرچه جوابش رو نمی شه تو کامپوننت های طرف سرور توقع داشت پس باید از خیر ASp.Net بگذرید و برید سراغ دوست قدیمیjavascript و یه Client-side Script
راستش مجبور شدم برای یکی از دکمه های DataGrid در یه برنامه وب فرم یک پیغام "آیا می خواهید حذف شود" با دوتا کلید Y/N بگذارم. یه Search تو MSDN و Google راه رو سریع نشون داد. توی خود MSDN هم با توضیح کامل بودش.
کافیه 5 مرحله بالا رو انجام بدید.
یه کد 1 خطی می چسبونه به event ه onclick و خلاص .. خودش اگه NO بشه کلیک رو می خوره و اگه Yes می فرسته که می آد تو برنامه و کار را مثل معمول انجام می ده. خلاصه اینکه برای تنظیم Yes/No کد نمی خواد....

October 15, 2004

About New KEYWORDs

If you are confuse with these KEYWORDs, you can read these below lines.
These keywords are Essential Concepts of newest microsoft technology.
WinFX: is the new programming model for Windows, starting with Longhorn.
Avalon: is the presentation system. (The Avalon team provides the APIs)
Aero: is the entire user experience, built on top of Avalon. (Aero team knows the most about user interface plans for Longhorn)
Indigo: is a set of .NET technologies for building and running connected systems.
Whidbey: is the code name of the next release of the .NET Framework and Visual Studio .NET development tools, incorporating new features such as support for 64-bit platforms.
Monad: is the new command shell in Longhorn.

اگه مايکروسافت با يه گوني اصطلاحات اعصابتون رو بهم ريخته مي تونيد اين تعريف هاي خلاصه رو يه جوري تو خاطرتون نگه داريد.
WinFX: جديدترين مدل برنامه نويسي ويندوز که جايگزين .NET Framework مي شه براي نمايش قابليت هاي کلاس هاي مديريت شده longhorn. البته براي اونهايي که .NET Framework مي دونن درک اين روش و استفاده از managed code ها راحت تره.
Avalon: يه سيستم نمايش ظاهري يا Presentation System در ويندوز لانگهورن جديد مايکروسافت.
Aero: يه لايه بر روي Avalon هستش که کارايي هاي کاربر را بر عهده داره. تفاوتش با Avalon تو اينه که تيم طراح و برنامه نويس Avalon جون مي ککنه و يه مشت API آماده مي کنه که Aeroها باهاش UI صفحه که همون نمايش ظاهري ويندوزه رو درست کنن. (خودمونيم مدريت پروژة Avalon عجب حالي داره)
Indigo: اين ديگه چيه... اين يه مجموعه اي از تکنولوژي .Net که براي برنامه هاي ارتباطي مورد استفاده قرار مي گيره. در حقيقت زادة جديد ساختار communications در معماري سرويس هاي وب هستش. سرويس هاي وب مبتني بر Indigo داراي قابليت هايي همچون امنيت بالا، قابليت اطمينان بالا و ارتباط پيغام ها به صورت کاملا داخلي. Indigo کاملا بر اساس مدل جديد برنامه نويسي با نام service-oriented programming که بر روي .NET Framework و برنامه نويسي ياده شده رد برنامه هاي ارتباطي ساخته شده است. با اونکه ماله لانگهورنه ولي تو .Net2003 و Xp هم ساپورت مي شه و اينش معرکس که مجموعة کاملي از انواع معماري هاي سيستم هاي توزيع شده است مثل مدل هاي معماري(architecture)، انتقالات پوشا (spanning transports)، سيستم هاي حفاظتي(security systems)، الگوي هاي پيغامي(messaging patterns)، رمزگذاري ها(encodings)، توپولوژي هاي شبکه(network topologies) و مدل هاي هاستينگ(hosting models) مي باشد.
البته واضحه که يادش مونده که ترکيبي با مهمترين زير ساختارهاي سيستم هاي توزيعي و سرويس هاي وب مبتني بر مثل COM+, MSMQ, ASP.NET برقرار کنه و قول داده بدون دست کاري و modification رو اين سيستم جديد کار کنن.
البته براي اون هايي که از .NET Remoting يا سرويس هاي وب ASP.NET و يا .NET Enterprise Services استفاده مي کنن راه حلهايي به منظور ارتقا به سيستم فعلي قرار داده.
Whidbey: و بالاخره عشق منه جواد پروگرمر ... نسخه جديد .NET Framework و Visual Studio .NET development tools با قابليت پشتيباني از سيستم هاي 64 بيتي. گرچه هنوز دارن مي نويسننش و ايني که تو بازاره نسخه اي که تو کنفرانس PDC2003(Professional Developers Conference 2003) به ملت نشون دادن. البته هنوز نیومده یکی دیگه هم تو راهه. در حقیقت Whidbey رو می شه Visual Studio 2004 فرض کرد. قراره Visual Studio 2005 با اسم رمز Orcas هم بعد از اون بیاد. البته برای اینکه دل دیتابیس کارها هم نسوزه و SQLServer هم از قافله عقب نمونه SQL Server 2005 با اسم رمز YUKON اتو راهه که ز قابلیت های توپش همین کافیه که بشه تو C# و ... stored procedure نوشت. دیروز که بازار رضا بودم نسخه Beta2 ش تازه اومده بود.
Monad: اين يکي هم به نظر لازم مي رسيد ديگه. يه نسخه جديد از Command Line لانگهورنه که تو ويندوزهاي فعلي ها با cmd يا command اجرا ميشد. به اصطلاح عاميانه همون صفحه داسي که مشکي هستش و ميشه مثل Unix/Linux کارها خودت تايپ کني و کار کني. تو PDC2003 که ازش تعريف کردن و گفتن براي administrative tasks چيز مناسبيه و مي گفتن انقلابيه در Task-Oriented Automation Framework که بهش مي گن commandlets و اين يه رويه بر روي APIهاي مديريت شده، پيغام ها (در نسل جديد Command Line Shell) و تمام ابزارهاي مبتني بر GUI هستش.

از چيزهاي جالب اينکه قسمت عمده اي از Avalon رو با #C نوشتن يا XAML تو Avalon کار نمي کنه و هيچ برنامه یا نقشه اي براي کار با XAML تو XP و ... ندارن

October 11, 2004

VGA vs DirectX

IF you have this prompt error THEN you have a DirectX problem.
IF you have a good (not very old) Graphic Card You must install All Driver's Card because this error mean's about have not compatibility between Graphic Card and DirectX.
OR you must BUY a new graphic card ;-).

Commandos 3: commandos3.exe - Application Error
The instruction at "0x0043abf7" referenced memory at "0x00000000". The memory could not be "read".
Click on OK to terminate the program
Click on CANCEL to debug the program

ايراد بالا در اثر عدم تطابق (انطباق پذيري، مچ شدن) کارت گرافيکي با DirectX پيش مي آد که بيشترين دليلش مي تونه شناختن Generic کارت گرافيکي شما توسط ويندوز باشه چون در اين صورته که کارت گرافيکي در يه حالت نسبتا مناسبي از لحاظ نمايش صفحه قرار داره ولي چون درايور هاي اصليش نصب نيست با DirectX مشکل ميده.
اين رو دقت کنيد که ممکنه ويندوز کارت شما را خوب شناخته باشه (يعني حتي اسمشو با يه مشت مشخصاتش دقيقا درست نوشته باشه و پيدا کرده باشه) ولي اين دليل نمي شه که داره از تمام کارايي کارت گرافيکي شما استفاده مي کنه و براي استفادة مطلوب تر بايست درايورش رو نصب کنيد و اون وقته که مشکلش با DirectX حله و شما مي تونين به کارتون (مثلا بازي Commandos3) برسيد. خوش بگذره.

October 08, 2004

WMF Compiler Setting

You solve below problem with set configuration. in first step press Alt+F7 and then configured with below 3 steps.

????.obj : error LNK2001: unresolved
external symbol _WMCreateWriter@8
Debug/????.exe : fatal error LNK1120: 1 unresolved externals

راستش بعد از اینکه مشکلم حل شد تازه
یادم افتاد که هنوزم درست و اصولی برنامه نویسی نمی کنم ...
برای رفع این مشکل باید Visual Studio و پروژه مزبور رو Configure کنیم.
راهنمای تنظیم اون در این آدرسه
Windows Media Format SDK > Programming Guide > Getting Started > SDK Library Files and Compiler Settings
برای رفع این مشکل برید تو Settings از منوی Project و سپس این جاها

1) C/C++ > Category = Code Generation > run-time library > Debug Multithreaded DLL
2) Link tab > Category = General > Ignore all default libraries > check box
3) Link tab > Category = General > Object/library modules > Msvcrtd.lib, Wmvcore.lib

توجه کنید که در مورد 1 اگه پروژه به صورت Release داره Configure می شه به جای Debug Multithreaded DLL از Multithreaded DLL استفاده شود.
توجه کنید که در مورد 3 Libc.lib یا مشابه هاش رو add نکنید.
راستی اگه پروژه یهو 160~170 تا error داد نزنین تو سرتوون ... احتمالا تو Link tab > Category = General یه گونی lib دیگه add کرده بودید .. پس کافیه اون چک رو تو گزینه 2 بردارید.
حل شد ... خب خدا رو شکر .. لذتشو ببیرید.
البته اگه بخوام راستشو بگم خودم بجای همون 2 تا تمام این زیری ها را به LIB اضافه کردم.
quartz.lib winmm.lib msacm32.lib olepro32.lib strmiids.lib Wmvcore.lib