webForumDet fria alternativet

Ändring i .net???

.NETur .NET

9 svar · 364 visningar · startad av Frobeck

Medlem sedan okt. 200116 inlägg
Frågan#1

Jag har denna kod:

using System;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Community.Controls
{
public class AddUser : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtFirstName;
protected System.Web.UI.WebControls.TextBox txtLastName;
protected System.Web.UI.WebControls.TextBox txtEmail;
protected System.Web.UI.WebControls.TextBox txtNickName;
protected System.Web.UI.WebControls.TextBox txtPassword;
protected System.Web.UI.WebControls.ImageButton btnRegister;
protected System.Web.UI.WebControls.Label SysTray;

	public AddUser()
	{
		Page.Init += new System.EventHandler(Page_Init);
	}
	
	private void Page_Init(Object obj, EventArgs e)
	{
		InitializeComponent();
	}

	private void Page_Load(object sender, System.EventArgs e)
	{
	}
	
	private void btnRegister_Click(Object obj, System.Web.UI.ImageClickEventArgs e)
	{
		if(Page.IsValid)
		{
			String SQL = "Insert Into Users(usrNick) values ('" + txtNickName + "')";
			String SQLChk = "SELECT NickName FROM Users WHERE NickName='" + txtNickName.Text + "'";
			
			OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("DB/CommunityDB.mdb") + ";");
			OleDbCommand Cmd = new OleDbCommand(SQL, Conn);
			OleDbCommand CmdChk = new OleDbCommand(SQLChk, Conn);

			Conn.Open();

			OleDbDataReader dr = CmdChk.ExecuteReader();
			
			if(dr.Read())
			{
				SysTray.Text = "Det finns redan en användare med det användarnamnet";
				dr.Close();
			}
			else
			{
				dr.Close();
				Cmd.ExecuteNonQuery();
			}

			Conn.Close();	
		}
	}

	private void InitializeComponent()
	{    
		this.btnRegister.Click += new System.Web.UI.ImageClickEventHandler(this.btnRegister_Click);
		this.Load += new System.EventHandler(this.Page_Load);
	}

}

}

Som fungerar jätte bra endas tills det att den skall lägga in saker i databasen via mitt Insert Into uttryck, då får jag ett fel som ser ut på detta sätt:

Operationen måste använda en fråga som kan uppdateras.
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.OleDb.OleDbException: Operationen måste använda en fråga som kan uppdateras.

Och då är frågan varför skulle inte mitt Insert Into uttryck vara uppdaterbart? Och jag vet med 99% säkerhet att detta fungerade under Beta 2 men efter att jag installerat version 1 så har det slutat fungera.

någon som vet något om detta, kollade på gotdotnet.com om uppdateringar till version 1, men jag kan inte hitta något!

snälla hjälp, det kanske helt enkelt bara är fel på min kod...
Kanske ska tillägga att det jag skrivit in ligger i en .cs fil och att jag kör med CodeBehind="..." å sånt...

Medlem sedan juni 20011 732 inlägg
#2
String SQL = "Insert Into Users(usrNick) values ('" + txtNickName[B].Text[/B] + "')";
Medlem sedan okt. 200116 inlägg
#3

har provat det, men det fungerar endå inte.

Medlem sedan okt. 200116 inlägg
#4

nu verkar ingenting fungera

jag testade att köra denna kod enbart och det fungerar inte heller. Får samma fel som förut, har det blivit något alvarligt fel på min installation av asp.net eller vad är det frågan om?
det gäller bara INSERT uttryck, allt annat fungera.

<%@ Import Namespace="System.Data.OleDb" %>
<%
Dim conAuthors As OleDbConnection
Dim strInsert As String
Dim cmdInsert As OleDbCommand

conAuthors = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=c:\inetpub\wwwroot\Specialarbete.NET\DB\Authors.mdb" )
strInsert = "Insert Into Authors ( au_Fname, au_Lname ) Values ( 'Bertrand', 'Russell' )"
cmdInsert = New OleDbCommand( strInsert, conAuthors )

cmdInsert.Connection.Open()
cmdInsert.ExecuteNonQuery()
cmdInsert.Connection.Close()

%>
New Author Added!

Medlem sedan apr. 20003 971 inlägg
#5

Är databasen skrivskyddad?

Medlem sedan juni 20011 732 inlägg
#6

I sista exemplet: Kan det inte vara att du måste skriva sökvägen till databasen med dubbla \\ ?

Source=c:\\inetpub\\wwwroot\\Specialarbete.NET\\DB\\Authors.mdb"
Medlem sedan okt. 200116 inlägg
#7

nej

Medlem sedan okt. 200116 inlägg
#8

jag har testat med flera olika databaser, å vad jag än gör så får jag felet.
System.Data.OleDb.OleDbException: Operationen måste använda en fråga som kan uppdateras.

det är endast Insert into uttryck som blir fel.

Medlem sedan okt. 20005 273 inlägg
#9

try catch

testa:

try
{
	
cmdInsert.Connection.Open() 
cmdInsert.ExecuteNonQuery() 
cmdInsert.Connection.Close()
}
catch(OleDbException ex)
{
Response.Write(ex.Message)
}

och se om du får nått vettigare svar... :)

Medlem sedan okt. 200116 inlägg
#10

Tack alla som försökt hjälpa...
jag löste det genom att ändra läs/skriv rättigheterna på den enskillda databasen, men känns endå som att man inte ska behöva göra det!

tacka i alla fal!!!

140 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)