hab deinen Eintrag erst jetzt gesehen.
Welchen Eintrag muss ich im ISS machen? Und wie meinst du das mit Links auf Dateien?
wie kann ich machen, dass beim pageload gerade diese klasse aufgerufen wird?
sonst kommt er ja dort gar nicht durch...
tatsächlich, es funktioniert!
Und jetzt? Wie muss ich weiter vorgehen?
Datei- oder Assemblyname 'Webapplication.dll' oder eine Abhänigkeit davon wurde nicht gefunden.
Jetzt bekomm ich dann echt die Kriese
die dll, die auf dem Server erstellt wurde?
die heisst Webapplication.dll
Datei- oder Assemblyname 'SearchPrm.dll' oder eine Abhänigkeit davon wurde nicht gefunden.
Datei- oder Assemblyname 'SearchPrm' oder eine Abhänigkeit davon wurde nicht gefunden.
🤔
so sieht meine Seite aus:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing.Imaging;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using Database.Utilities;
namespace SearchPrm
{
/// <summary>
/// Zusammenfassung für SaveFile.
/// </summary>
public class SaveFile : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
}
#region Vom Web Form-Designer generierter Code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: Dieser Aufruf ist für den ASP.NET Web Form-Designer erforderlich.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
public class previewHandler : IHttpHandler
{
public bool IsReusable
{
get
{
return true;
}
}
public void ProcessRequest(HttpContext ctx)
{
HttpRequest Request = ctx.Request;
HttpResponse Response = ctx.Response;
string sqlStmt = null;
string FileId = Request.QueryString["FileId"];
OracleConnection dbConn = null;
Database.Utilities.OracleDatabaseHelper dbHelper =
new Database.Utilities.OracleDatabaseHelper();
try
{
// SQL definieren
dbConn = dbHelper.openDatabaseConnection();
// SQL definieren
sqlStmt = "select file from prompt where id = " + FileId;
// neues OracleCommand erstellen
OracleCommand cmd = new OracleCommand();
// Command setzen, um SQL Statement zu erstellen
cmd.CommandText = sqlStmt;
// OracleCommand zu Datenbankverbindung setzen
cmd.Connection = dbConn;
// Setzt den SQL Befehl zu Typ Text
cmd.CommandType = CommandType.Text;
// Ausführen des SQL Statements
OracleDataReader oraReader = cmd.ExecuteReader();
if ( oraReader.Read())
{
Response.BinaryWrite( (byte[]) oraReader["file"] );
}
}
finally
{
// Datenbankverbindung schliessen
dbHelper.closeDatabaseConnection(dbConn);
}
}
}
}
was muss ich nun in der config eingeben?
Datei- oder Assemblyname 'IHttpHandler' oder eine Abhänigkeit davon wurde nicht gefunden.
wieder ein Fehler
jetzt kommt eine weitere Fehlermeldung:
Das erforderliche Attribut 'verb' wurde nicht gefunden.
<system.web>
<httphandlers>
<add path="*.wav" type="SearchPrm.IHttpHandler" />
</httphandlers>
<!-- DYNAMISCHE DEBUGKOMPILIERUNG
Setzen Sie compilation debug="true", um ASPX-Debuggen zu aktivieren. False
verbessert die Laufzeitleistung der Anwendung.
Setzen Sie compilation debug="true", um Debugsymbole (PDB-Informationen)
in die kompilierte Seite einzufügen. Da hierdurch eine größere Datei erstellt wird,
die langsamer ausgeführt wird, sollten Sie diesen Wert nur zum Debuggen auf True setzen und
ansonsten auf False. Weitere Informationen finden Sie in der Dokumentation über
das Debuggen von ASP.NET-Dateien.
-->
dort habe ich den httphandler reingemacht. aber nein, ich bekomme einen Fehler..die web.config habe einen Syntaxfehler..
ich versuchs mal..
aber wo muss ich den httphandler in dr config schreiben?
Ich habe es ja hinbekommen, dass ich nach Klick auf einen Button die Sounddatei wiedergebe. Dafür muss ich auch das Blob aus der Datenbank lesen.
Der Code sieht so aus:
private void Page_Load(object sender, System.EventArgs e)
{
string sqlStmt = null;
string FileId = Request.QueryString["FileId"];
OracleConnection dbConn = null;
Database.Utilities.OracleDatabaseHelper dbHelper =
new Database.Utilities.OracleDatabaseHelper();
try
{
// SQL definieren
dbConn = dbHelper.openDatabaseConnection();
// SQL definieren
sqlStmt = "select file from prompt where id = " + FileId;
// neues OracleCommand erstellen
OracleCommand cmd = new OracleCommand();
// Command setzen, um SQL Statement zu erstellen
cmd.CommandText = sqlStmt;
// OracleCommand zu Datenbankverbindung setzen
cmd.Connection = dbConn;
// Setzt den SQL Befehl zu Typ Text
cmd.CommandType = CommandType.Text;
// Ausführen des SQL Statements
OracleDataReader oraReader = cmd.ExecuteReader();
if ( oraReader.Read())
{
Response.BinaryWrite( (byte[]) oraReader["file"] );
}
}
catch(OracleException ex)
{
NotificationLabel.Text = ex.Message;
NotificationLabel.Visible = true;
}
finally
{
// Datenbankverbindung schliessen
dbHelper.closeDatabaseConnection(dbConn);
}
}
Müsste ich nicht einfach Response.BinaryWrite( (byte[]) oraReader["file"] );
ändern, um die Datei zu speichern?
ok, das habe ich nun rausgefunden:
Response.BinaryWrite( (byte[]) oraReader["file"] );
und nun?
was muss ich in die web.config schreiben?
<httphandlers>
...
<add verb="" path=".aspx" type="System.Web.UI.PageHandlerFactory,System.Web" />
...
</httphandlers>
Ne, leider blicke ich im Moment überhaupt nicht durch.
Byte[] FileContent = new byte[FileLength]; int intStatus; intStatus = FileStream.Read(FileContent, 0, FileLength);
und dann? ?(
Danke für deinen Code. Aber wie bekomme ich das File aus der Datenbank? Die Datei ist in einem BLOB Feld abgelegt.
In der web.config muss ich dann ja sowas ähnliches eingeben:
<httphandlers>
...
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory,System.Web" />
...
</httphandlers>
und bei meiner Seite dann:
public class SimpleHandler : IHttpHandler {
public void ProcessRequest(HttpContext context) {
context.Response.Write("Hello World!");
}
public bool IsReusable {
get {
return true;
}
}
}
Habe ich beim googeln gefunden. Aber wie muss ich das jetzt für mein Problem machen?
Hallo
Ich möchte ein Soundfile, welches in einer ORACLE Datenbank gespeichert ist, zum downloaden bereitstellen.
In einem Datagrid gebe ich die Files aus. Dort kann ich sie auch anhören. Und nun soll auch die Download Möglichkeit bestehen.
Wie muss ich da vorgehen? Ich habe die ID des Soundfiles auch im Datagrid. Kann ich das mit SaveFile machen oder wie?
wiedergeben funktioniert auch prima.
Nun möchte ich, dass man das File noch downloaden kann
Ist es möglich, in einem DataGrid ein DownloadLink anzuzeigen? Ich lese aus einer Datenbank eine Musikdatei aus. Die Datei ist in einem Blob Feld gespeichert. Beim Klick auf anhören kann ich die Datei im MediaPlayer anhören. Nun möchte ich, dass man die Datei auch direkt speichern kann. Also es soll das Fenstern "Speichern unter" erscheinen. Weiss jemand, wie man das realisieren könnte?
ich habs ja rausgefunden. du hast mich wohl falsch verstanden. Die Lösung die hier gepostet wurde, ist nicht für mein Problem. Sonst kann ich tabellen joinen aber nicht so wie mein Fall ist. Naja, Problem gelöst!
Ich habe es mit Join versucht. Aber leider komme ich nicht drauf, wie ich den Code zusammenbasteln muss.
Employees: Employee_ID, Name
Orders: Prod_ID, Product
Emp_Ord: Employee_ID, Prod_ID
Nun möcht ich von der Employees den Namen und von Orders das Product. Dafür muss ich ja auch noch auf die Emp_Ord zugreifen, aber wie?
kannst du das ein bisschen genauer erklären?
Ich möchte ein DataGrid erstellen und möchte dort vier Spalten füllen. Drei kommen aus Tabelle A und 1 aus Tabelle B. Wie kann ich da vorgehen?
ja:
select seqname.currval from tabelle;
Mit diesem Befehl kann man doch die letzte ID auslesen, oder?
Ich habe ein Datagrid mit Checkboxen.
Nun habe ich folgenden Code um die ID der ausgewählten Datensätze ausgeben zu können:
foreach (DataGridItem i in DataGrid.Items)
{
string DataGridID = "";
CheckBox insertChkBxItem = (CheckBox) i.FindControl ("checkboxID");
if (insertChkBxItem.Checked)
{
DataGridID += ((Label) i.FindControl ("id")).Text.ToString() + ",";
string deleteOra = DataGridID.Substring(0,DataGridID.LastIndexOf(","));
}
}
auch wenn die Checkbox checked=true ist, geht die Funktion nicht in if (insertChkBxItem.Checked) hinein... Was ist falsch daran?
Das DataGrid sieht so aus:
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox ID="checkboxID" runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label visible="False" ID="id" Text='<%# DataBinder.Eval (Container.DataItem, "id") %>' runat="server"/>
</ItemTemplate>
</asp:TemplateColumn>
private void btnSave_Click(object sender, System.EventArgs e)
{
OracleConnection dbConn = null;
string Filename = FilenameTextBox.Text;
string CD = CDTextBox.Text;
string Language = ddlLang.SelectedValue.ToString();
string Text = TextTextBox.Text;
string Date = DateTextBox.Text;
string Archiv = ddlArchiv.SelectedValue.ToString();
string sqlStmt = null;
Database.Utilities.OracleDatabaseHelper dbHelper =
new Database.Utilities.OracleDatabaseHelper();
try
{
// Establish the database connection
dbConn = dbHelper.openDatabaseConnection();
// define the sql to perform the database insert
sqlStmt = "UPDATE tabelle SET filename = '" +Filename+ "', cd = '" +CD+ "', language = '" +Language+ "', text = '" +Text+ "', date = '" +Date+ "', archiv = '" +Archiv+ "' WHERE id = '"+FileID+"' ";
// Establish a new OracleCommand
OracleCommand cmd = new OracleCommand();
OracleParameter paramDate = new OracleParameter("prompt_date",
OracleDbType.Date);
paramDate.Value = Date;
paramDate.Direction = ParameterDirection.Input;
cmd.Parameters.Add(paramDate);
// Set command to create your SQL statement
cmd.CommandText = sqlStmt;
// Set the OracleCommand to your database connection
cmd.Connection = dbConn;
// Set the command type to text
cmd.CommandType = CommandType.Text;
// Execute the SQL Statement
cmd.ExecuteNonQuery();
}
finally
{
// Close the database connection
dbHelper.closeDatabaseConnection(dbConn);
}
}
Jetzt habe ich das Datum als Parameter hinzufügen wollen. Aber nein, es funktioniert immer noch nicht. Langsam aber sicher habe ich keine Nerven mehr... Weiss niemand die Lösung??
habe das problem entdeckt.. im Textfeld Datum wird das Datum so angezeigt: 00.00.0000 00:00:00 und deshalb die Fehlermeldung. Lösche ich 00:00:00 dann funktioniert das ganze.. Aber wie kann ich diesen Fehler beheben?
also ich habe das laden in die Textfelder ins postback getan. so wie du beschrieben hast. Nun bekomme ich aber immer noch die Fehlermeldung mit dem Datum. Wie kann ich diesen Fehler beheben?
Hier mein Code:
private void btnSave_Click(object sender, System.EventArgs e)
{
OracleConnection dbConn = null;
string Filename = FilenameTextBox.Text;
string CD = CDTextBox.Text;
string Language = ddlLang.SelectedValue.ToString();
string Text = TextTextBox.Text;
string Date = DateTextBox.Text;
string Archiv = ddlArchiv.SelectedValue.ToString();
string sqlStmt = null;
Database.Utilities.OracleDatabaseHelper dbHelper =
new Database.Utilities.OracleDatabaseHelper();
try
{
// Establish the database connection
dbConn = dbHelper.openDatabaseConnection();
// define the sql to perform the database insert
sqlStmt = "UPDATE tabelle SET filename = '" +Filename+ "', cd = '" +CD+ "', language = '" +Language+ "', text = '" +Text+ "', date = '" +Date+ "', archiv = '" +Archiv+ "' WHERE id = '"+FileID+"' ";
// Establish a new OracleCommand
OracleCommand cmd = new OracleCommand();
// Set command to create your SQL statement
cmd.CommandText = sqlStmt;
// Set the OracleCommand to your database connection
cmd.Connection = dbConn;
// Set the command type to text
cmd.CommandType = CommandType.Text;
// Execute the SQL Statement
cmd.ExecuteNonQuery();
}
finally
{
// Close the database connection
dbHelper.closeDatabaseConnection(dbConn);
}
}
und wie lässt sich dann mein problem lösen?
es ist eine webanwendung.
fehlermeldung:
ORA-01830: Datumsformatstruktur endet vor Umwandlung der gesamten Eingabezeichenfolge
Ich habe ein Formular. Dort kann ich verschiedene Angaben machen.
Ich mache nun ein Insert in Tabelle 1. Schreibe dort meine Personalien ein. Für den Beruf habe ich Tabelle 2. Nun bekomme ich ja eine ID, die in Tabelle 1 geschrieben wurde. Bei meinem Formular kann ich den Beruf aus einem DropDownMenü auswählen. Nun möchte ich die ID des Berufes (die finde ich heraus) und die ID der Person in die Tabelle 2 schreiben. Wie muss ich da vorgehen? Die ID der Person kenne ich ja nicht... Muss ich da zuerst eine SQL abfrage machen, oder waS?
schau, so sieht mein Code aus:
private void btnSave_Click(object sender, System.EventArgs e)
{
OracleConnection dbConn = null;
string Filename = FilenameTextBox.Text;
string CD = CDTextBox.Text;
string Language = ddlLang.SelectedValue.ToString();
string Text = TextTextBox.Text;
string Date = DateTextBox.Text;
string Archiv = ddlArchiv.SelectedValue.ToString();
string sqlStmt = null;
Database.Utilities.OracleDatabaseHelper dbHelper =
new Database.Utilities.OracleDatabaseHelper();
try
{
// Establish the database connection
dbConn = dbHelper.openDatabaseConnection();
// define the sql to perform the database insert
sqlStmt = "UPDATE tabelle SET filename = '" +Filename+ "', cd = '" +CD+ "', language = '" +Language+ "', text = '" +Text+ "', date = '" +Date+ "', archiv = '" +Archiv+ "' WHERE id = '"+FileID+"' ";
// Establish a new OracleCommand
OracleCommand cmd = new OracleCommand();
// Set command to create your SQL statement
cmd.CommandText = sqlStmt;
// Set the OracleCommand to your database connection
cmd.Connection = dbConn;
// Set the command type to text
cmd.CommandType = CommandType.Text;
// Execute the SQL Statement
cmd.ExecuteNonQuery();
}
finally
{
// Close the database connection
dbHelper.closeDatabaseConnection(dbConn);
}
}
der user ändert die Felder und klickt anschliessend auf speichern und dort habe ich die Zeile die du mir gepostet hast, eingefügt
es wird genau der gleiche Text genommen... Ich habe das ganze im Button_Click drin.
string ToDB = DateTextBox.Text;
war es vorher bspw. 01.01.2005 ist es jetzt immer noch 01.01.2005
Ich lese aus einer Datenbank Daten heraus und gebe diese mit
DateTextBox.Text = oraReader["prompt_date"].ToString();
aus. Es sind noch weiter. Nun möchte ich, dass man diese Daten bearbeiten kann, also z.B. ein anderes Datum eingeben kann. Mit einem update möchte ich dann das neue Datum in die DB speichern. Aber wie kann ich machen, dass die neu eingegebenen Daten genommen werden?
SELECT * FROM tabelle WHERE (cd='3' AND text='test');
jenachdem, welche Felder ich im Formular gefüllt habe.
Habe ein Formular mit Eingabefeldern. Fülle ich dort ein Feld, soll nach den eingegebenen Daten gesucht werden.
Nun verzweifle ich wirklich fast... Was ist hier falsch? Bekomme immer die fehlermeldung: UNgültiges Zeichen... X( Hier mein Code:
private void btnSearch_Click(object sender, System.EventArgs e)
{
PromptDataGrid.DataSource = this.ReadDataFromDB();
PromptDataGrid.DataBind();
}
#region ReadDataFromDB
private DataSet ReadDataFromDB()
{
OracleConnection dbConn = null;
string Text = TextTextBox.Text.ToString();
string CD = CDTextBox.Text.ToString();
string Date = DateTextBox.Text.ToString();
string Language = ddlLang.SelectedItem.Value;
string Archiv = ddlArchiv.SelectedItem.Value;
Database.Utilities.OracleDatabaseHelper dbHelper =
new Database.Utilities.OracleDatabaseHelper();
// Establish the database connection
dbConn = dbHelper.openDatabaseConnection();
DataSet MyDataSet = new DataSet();
OracleDataAdapter oCommand = new OracleDataAdapter();
OracleCommand cmd = new OracleCommand();
cmd.CommandType = CommandType.Text;
string sqlString1 = "SELECT *";
string sqlString2 = " WHERE (";
if (Text != "")
{
//sqlString1 += "text, ";
sqlString2 += "text = '" + Text + "' AND ";
}
if (CD != "")
{
//sqlString1 += "cd, ";
sqlString2 += "cd = '" + CD + "' AND ";
}
if (Date != "")
{
//sqlString1 += "date, ";
sqlString2 += "date = '" + Date + "' AND '";
}
if (Language != "")
{
//sqlString1 += "language, ";
sqlString2 += "language = '" + Language + "' AND ";
}
if (Archiv != "")
{
//sqlString1 += "archiv ";
sqlString2 += "archiv = '" + Archiv + "' ";
}
// ergänzungen
sqlString1 += " FROM tabelle ";
sqlString2 += " ); ";
// zusammenfügen
string sqlStmt = sqlString1+sqlString2;
cmd.CommandText = sqlStmt;
cmd.Connection = dbConn;
oCommand.SelectCommand = cmd;
oCommand.Fill(MyDataSet);
dbConn.Close();
return MyDataSet;
Ich habs mal gemacht und nun bekomme ich einen Fehler..
ORA-00933: SQL-Befehl wurde nicht korrekt beendet
Ausserdem wollte ich noch fragen, wie macht man es, wenn ich möchte, dass bei der Suche alles aufgelistet wird, was die Zeichenfolge "er" hat. ich würde ja bei Dateiname er eingeben und müsste ja dann mit LIKE %er arbeiten, oder? und wie geht das in dieser Abfrage, wie du es machst?
und wie müsste ich das bei mir machen? komm nicht ganz draus mit den sqlString1 und so weiter...
Zur Info:
Ich habe 3 TextBoxen und 2 DropDownMenü
Hier jeweils die ID der Textbox und in Klammer [] der Spaltenname:
TextTextBox [Text]
CDTextBox [CD]
DateTextBox [Date]
DropdownMenü:
ddlLanguage [Language]
ddlArchiv [Archiv]
Wie muss ich nun vorgehen?
also eigentlich ist es ganz einfach...
ich habe eine Datenbank mit den Feldern:
Dateiname
CD
Sprache
Text
Datum
Archiv
nun habe ich für jedes Feld in einem WebForm eine Textbox bzw. DropDownMenü erstellt... (Sprache / Archiv DropDownmenü)
Nun möchte ich die Datenbank nach diesen eingegebenen Daten durchsuchen.
Nun muss ich überprüfen, in welcher Textbox etwas eingegeben wurde damit ich nicht nach Dateiname = "" suche, obwohl dort ja nichts eingegeben wurde. Es würde ja die Suchergebnisse verfälschen. Wie kann ich das nun machen, damit ich nicht mehrere SQL Statements machen muss?
wo liegt den der Fehler?