Hej. Det ska funka. varför inte skriva så här? För att det är säkrare att använda parametrar, SQL Injection förhindras på det sättet... Jag har kontrollerat att connectionstringen fungerar. Pröva alltid sql-satsen först, i det här fallet i access, så att du vet att det inte är fel på den. Nu verkar det ju faktiskt vara fel i din sql-sats så pröva att få till den rätt i access först. Genom att alltid pröva sina sql-satser, stored procedures m.m. först innan man prövar dem i applikationen så vet man åtminstone att de är rätt om det skulle uppstå exceptions i applikationen. Jag har provat ditt förslag på hur sql-satsen ska se ut. Får tyvärr samma felmeddelande. Ok, trodde att det skulle vara samma som när man använder en dataadapter med parametrar. Jag har själv aldrig använt mig av en datareader. Använder nästan alltid Microsofts "Data Access Application Block" fast då Sql Server. Skulle kunna bero på att user är ett reserverat ord, testa såhär:Parametrar och MS Access
Hur får man parametrar att fungera med MS Access 2000? Min kod ser ut så här men fungerar dock inte utan det kastar en exception.
<code>
string sql = "select * from user where user_name = ? and user_password = ?";
OleDbConnection conn = new OleDbConnection(strConnString);
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@user_name", OleDbType.Char);
cmd.Parameters.Add("@user_password", OleDbType.Char);
cmd.Parameters["@user_name"].Value = anv.Text;
cmd.Parameters["@user_password"].Value = losen.Text;
try
{
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
Session["Inloggad"] = "Cocos2006";
Server.Transfer("blogg_comments.aspx");
}
else
{
lblMsg.Text = "Tyvärr gick det inte att logga in. Försök igen!";
}
dr.Close();
conn.Close();
}
catch (OleDbException ex)
{
lblMsg.Text = ex.ToString();
}
</code>Sv: Parametrar och MS Access
Är connectionsträngen korrekt?
Vad står det i felmeddelandet?Sv:Parametrar och MS Access
select * from user where user_name = '"+minVariabel+" and user_password = '" +MinAndraVariabel+ "'"Sv: Parametrar och MS Access
Sv:Parametrar och MS Access
Felmeddelandet ser ut så här:
System.Data.OleDb.OleDbException: Syntaxfel i FROM-instruktion. vid System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) vid System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) vid System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) vid System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) vid System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) vid System.Data.OleDb.OleDbCommand.ExecuteReader() vid admin_Default.btmLoggain_Click(Object sender, EventArgs e) i c:\Inetpub\wwwroot\cocos2006\admin\Default.aspx.cs:rad 38
Men när jag skriver in frågan direkt i MS Access får jag inget felmeddelande utan den frågar snällt efter först parameter nr 1 och sedan parameter nr 2.Sv: Parametrar och MS Access
Det bör stå:
"select * from user where user_name = @user_name and user_password = @user_password";
Du bör kunna, om du debuggar och lägger en watch på cmd, utläsa hur sql-satsen blev. Då kommer du nog direkt se vad felet är.Sv:Parametrar och MS Access
Har kört debugg men kan inte se vart felet ligger i sql-satsen eftersom den ser ut så här när jag lägger en watch på den
select * from user where user_name = @user_name and user_password = @user_password. Det blir fel när jag kör denna kodsnutt
<code>OleDbDataReader dr = cmd.ExecuteReader();</code>
Vad jag kan se i debbugern har båda parametrarna värde i form av string som de ska och databasen är öppen för användning. Och som sagt sql-frågan fungerar i Access som den ska. I alla fall så frågar den efter värdet på parameter nr 1 först i en ruta och sedan parameter nr 2 om man skriver in värden i rutorna får man ett resultat. Så jag antar att det fungerar men jag har aldrig kört en sådan fråga i Access förut så jag har kanske helt fel brukar mest hålla på med MySQL.Sv: Parametrar och MS Access
Sv: Parametrar och MS Access
string sql = "select * from [user] where user_name = ? and user_password = ?";
/Johan