Showing posts with label click. Show all posts
Showing posts with label click. Show all posts

Monday, March 19, 2012

Data corruption in ldf when debugging WinForm app

I'm trying to build my 1st WinForm app which uses SqlExpress and when I click Debug and test my app everything is fine (though occasionally I do get time out errors - but that's another question I guess), however I can't then debug the app again because I get the following error:

"The log scan number (34:410:82) passed to log scan in database '3D1D0C232D2C55B0EF6C455470CD3D4C_S\\VISUAL STUDIO 2005\\PROJECTS\\MYFIRSTAPP\\MYFIRSTAPP\\BIN\\DEBUG\\OTJDB.MDF' is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup. \r\nAn error occurred during recovery, preventing the database '3D1D0C232D2C55B0EF6C455470CD3D4C_S\\VISUAL STUDIO 2005\\PROJECTS\\MYFIRSTAPP\\MYFIRSTAPP\\BIN\\DEBUG\\OTJDB.MDF' (database ID 5) from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support.\r\nCannot open user default database. Login failed.\r\nLogin failed for user 'SQurreL\\Simon'."

I can't delete the ldf or mdb files in the debug\bin folder because they are in use, so I have to stop the SQLExpress service, kill the sqlserv.exe process, delete the ldf and mdb files, then restart the SQLExpress service and try again... which is beginning to get right on my nerves nowAngry

Can anyone help with my sanity please?

Hi ganseki,

I think the error message has claimed very clearly: " .....that the log file (.ldf) does not match the data file (.mdf)." If mdf file and the corresponding ldf file cannot match, we cannot open that database again--that's designed by microsoft. So, we need to "If this error occurred during replication, re-create the publication. Otherwise, restore from backup..".

I have to stop the SQLExpress service, kill the sqlserv.exe process, delete the ldf and mdb files, then restart the SQLExpress service and try again

I think what you did is right. So, does this error still occure after you did that? Also i'm curious about what you did to that database thru your application, that you get that error message.

Hope my suggestion helps

|||

Thanks for the reply.

Any idea why that is happening each time I debug the app? Or is it normal for WinForms development to have to jump through those hoops in order to test the changes.

It takes longer to stop the service, kill the process, delete the files and restart the service than to make a change to a column width in a datagridview, which if I then find is too narrow or too wide means I have to go through that whole process again just to check that changing the width from 150 to 100 isn't enough? This involves no change to the database, all that would have happened is a select to get the data for the grid, but it happens even without any database interaction - i.e. just opening the app (which starts with a blank page).

After debugging I click the close button on the form, the app closes and Visual Studio quits debug mode. I make changes (which can be as trivial as my illustration above) and then have to go through that routine. And that happens each and every time I want to debug.

It is driving meinsane
Is there something I should be doing differently to stop this from happening?

Thursday, March 8, 2012

Data Binding-DataAdapter

Hi i'm a new to ASP.NET and for some reason when i click the Next button in the code below, the pageIndex does not change. Please assist, Basically what i'm trying to do is to use DataAdapter.fill but passing in the start index and the number of records to pull from the dataset table.

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.OleDb;

publicpartialclassHome : System.Web.UI.Page

{

//Connection

OleDbConnection dbConn;

//discount that can be change by user using a gui interface

//CurrentPage

int pageIndex = 0;double discount = 0.15 ;

protectedvoid Page_Load(object sender,EventArgs e)

{

// homeGridView.Visible = true;

BindList();

}

protectedstring getSpecial(string price,object sale)

{

String special ="";if (sale.ToString().CompareTo("True") == 0)

{

special =String.Format("{0:C}",double.Parse(price) * (1-discount));

}

return special;

}

protectedvoid BindList()

{

//Creating an object for the 'PagedDataSource' for holding the data.

//PagedDataSource objPage = new PagedDataSource();

try

{

//open connection

openConnection();

//sql command

string columns ="*";

string SqlCommand ="Select " + columns +" from Books";

//create adapters and DataSet

OleDbDataAdapter myAdapter =newOleDbDataAdapter(SqlCommand, dbConn);DataSet ds =newDataSet("bSet");

//create table

DataTable dt =newDataTable("Books");myAdapter.Fill(ds, pageIndex, 9,"Books");

Response.Write("Page Index: "+pageIndex);

//create table data view

DataView dv =newDataView(ds.Tables["bTable"]);

booksDataList.DataSource = ds;

booksDataList.DataBind();

myAdapter.Dispose();

dbConn.Close();

}

catch (Exception ex)

{

Response.Write("Exception thrown in BindList()");

dbConn.Close();

throw ex;

}

}

publicvoid openConnection()

{

string provider="Microsoft.Jet.OLEDB.4.0";

string dataSource ="C:/Documents and Settings/Owner/My Documents/Visual Studio 2005/WebSites/E-BookOnline/App_Data/BooksDB.mdb";

dbConn =newOleDbConnection("Provider =" + provider +";" +"Data Source =" + dataSource);

dbConn.Open();

}

protectedvoid nextClick(object sender,EventArgs e)

{

pageIndex=pageIndex+1;

Response.Write("In nextClick"+pageIndex);

BindList();

}

protectedvoid prevClick(object sender,EventArgs e)

{

if (pageIndex > 0)

{

pageIndex=pageIndex-1;

BindList();

}

}

}

It is not advisable to use DataAdpater to page records... instead of this you need to use queries for that but anyway you can found this article useful.

http://msdn2.microsoft.com/en-us/library/tx1c9c2f(VS.80).aspx

Satya