Announcement

Collapse
No announcement yet.

Unicodes in Datenbank Speichern?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Smart
    started a topic Unicodes in Datenbank Speichern?

    Unicodes in Datenbank Speichern?

    Hallo,

    weiss jemand hier. wie ich die Unicodes in Datenbank(MSSQL) Speichern kann?

    Momentan bekomme ich nachdem Speichern nur laute ????? ??.

    Danke im Voraus.

    Smart

  • Bernhard Geyer
    replied
    Hallo Andreas,

    manchmal übersieht einige Dinge :-

    Leave a comment:


  • Andreas Kosch
    replied
    Hallo Bernhard,

    die Parameter-Lösung hatte ich schon vorgestellt - siehe meine Antwort vom 10.09.2004, 06:19 Uh

    Leave a comment:


  • Bernhard Geyer
    replied
    Oder als Parameter übergeben (Wie das in ASP.NET geht weiß ich nicht, kenn nur die Lösung in Delphi). Aber mit Parameter wärst Du auch gegenüber SQL-Injection geschützt

    Leave a comment:


  • AndreasU
    replied
    So funktioniert es: vor die Texte mit Unicode-Zeichen ein N (für Native?) setzen. Beispiel:

    <PRE>

    string strSql = "Update AlarmTexts SET AlarmText=N'" + strText + "' WHERE LanguageID='" + strLangId + "' AND AlarmId='" + strTextId + "'";

    <PRE&gt

    Leave a comment:


  • Smart
    replied
    Hi,

    danke für deine Bemühung.
    Bei mir sieh es etwas einfacher aus:

    Private objConn As New System.Data.SqlClient.SqlConnection(sConn)
    Private objReader As System.Data.SqlClient.SqlDataReader
    Private sSQL As String = "Inser into Test values('1','2','3')"
    Private objCmd As New System.Data.SqlClient.SqlCommand(sSQL, objConn)

    objCmd.ExecuteNonQuery()

    Naja, das ist eingentlich alles, was man dazu brauch, um einen Datenstaz zu speichern.
    Wie bereits erwähnt, bekomme ich nur laute ?? in der Tabelle geschrieben.

    Gibt es einen Weg einen String in UTF8 Zeichen umzuwandeln? Vielleich kann die Daten so abspeichern?

    MfG
    Smar

    Leave a comment:


  • Andreas Kosch
    replied
    Hallo,

    wie sieht das Problem an einem praktischen Beispiel aus? Ich kann alle möglichen Zeichen über den folgenden Weg speichern und auch im ASP.NET Web Form wieder anzeigen:
    <pre>
    <b>USE</b> tempdb
    <b>GO</b>
    <br>
    <b>CREATE</b> <b>TABLE</b> UNICODETEST
    (
    recid <b>INTEGER</b> <b>NOT</b> <b>NULL</b> <b>IDENTITY</b> <b>PRIMARY</b> <b>KEY</b>,
    wert NVARCHAR(9) <b>NOT</b> <b>NULL</b>
    )
    <b>GO</b>
    <br>
    <b>CREATE</b> <b>PROCEDURE</b> spInsert
    (
    @wert NVARCHAR(9)
    )
    <b>AS</b>
    <b>INSERT</b> <b>INTO</b> dbo.UNICODETEST (wert) <b>VALUES</b> (@wert)
    <b>RETURN</b> @@ROWCOUNT
    <b>GO</b>
    </pre>

    <pre>
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    SqlConnection1.Open()
    SqlCommand1.Parameters(1).Value = TextBox1.Text
    SqlCommand1.ExecuteNonQuery()
    SqlDataAdapter1.Fill(DataSet11)
    DataBind()
    SqlConnection1.Close()
    End Sub
    </pre>

    <pre>
    ...
    '
    'SqlCommand1 (wurde von VS.NET automatisch konfiguriert)
    '
    Me.SqlCommand1.CommandText = "[spInsert]"
    Me.SqlCommand1.CommandType = System.Data.CommandType.StoredProcedure
    Me.SqlCommand1.Connection = Me.SqlConnection1
    Me.SqlCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@RETURN_VALUE" ,
    System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, False,
    CType(0, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing))
    Me.SqlCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@wert",
    System.Data.SqlDbType.NVarChar, 9))
    ...
    </pre&gt

    Leave a comment:


  • Bernhard Geyer
    replied
    Dann habe ich auch keine weiteren Ideen mehr auf Lager:-

    Leave a comment:


  • Smart
    replied
    Hallo,

    hmmm, die benutze ich bereits:

    Z.B.
    Private objConn As New System.Data.SqlClient.SqlConnection(sConn)
    Private objReader As System.Data.SqlClient.SqlDataReader

    Private sSQL As String = "Select Counter From Zugang"
    Private objCmd As New System.Data.SqlClient.SqlCommand(sSQL, objConn)

    Ja, das klappt aber so auch nicht.

    Smar

    Leave a comment:


  • Bernhard Geyer
    replied
    Für ADO.NET gibt es native Zugriffskomponenten für den MS-SQL-Server. Diese heißen z.B. SQLConnection (statt ODBCConnection) usw. Die Verwendung ist eigentlich identisch mit den ODBC-Komponenten, jedoch greifen sie ohne ODBC auf die MS-Datenbank zu

    Leave a comment:


  • Smart
    replied
    Hi,

    ja das ist eine ODBC-Verbindung. Ich wüsste nicht, wie ich es anders lösen kann.

    "server=A8DRKWAU; database=DatenbankName; Trusted_Connection=yes"

    Gibt es einen anderen Weg? Kannst du es mir bitte detaliert beschreiben?

    Smar

    Leave a comment:


  • Bernhard Geyer
    replied
    Wie greifst Du auf den MS-SQL-Server zu?
    Hoffentlich nicht über den Umweg ODBC

    Leave a comment:


  • Smart
    replied
    Hallo,

    danke für deine Antwort.

    Es hat nicht daran gelegen. Die Unicodes werden immer noch als ???? gespeichert.
    Ich habe auch in meiner Datenbank Memo(text)-Felder. Da bekomme ich auch nur ????. Bei ntext auch.

    Danke
    Smar

    Leave a comment:


  • Bernhard Geyer
    replied
    Deine Spalten müssen als n(var)char angelegt sein. (var)char kann nur 8-Bit-Charaters speichern

    Leave a comment:

Working...
X