Avatar billede testpilot_dk Nybegynder
02. december 2005 - 13:06 Der er 17 kommentarer og
1 løsning

Længde af felt i database

Hej! jeg ønsker at ændre nogle feltnavne i en tabel, til det formål skal jeg kende længde af det aktuelle felt!

string sql = "ALTER TABLE " + tablename + " CHANGE COLUMN " + fieldname + " " + newname +" CHAR(" + lenght + ");";

hvordan får jeg min lenght ???
Avatar billede hmortensen Nybegynder
02. december 2005 - 14:26 #1
Altså feltets makslængde, eller data'ens længde ?
Avatar billede arne_v Ekspert
03. december 2005 - 05:17 #2
hm>

ALTER TABLE

CHAR
Avatar billede arne_v Ekspert
03. december 2005 - 05:18 #3
testpilot>

Prøv

DESCRIBE tablename
Avatar billede testpilot_dk Nybegynder
03. december 2005 - 09:16 #4
Det er feltets længde, som jeg angav da jeg oprettede den aktuelle tabel!
Avatar billede testpilot_dk Nybegynder
03. december 2005 - 14:17 #5
jeps, det virker Arne_v send et svar
Avatar billede testpilot_dk Nybegynder
03. december 2005 - 15:17 #6
Kender i en måde jeg kan gører det i Access også
Avatar billede arne_v Ekspert
03. december 2005 - 15:26 #7
prøv

SELECT TABLE_NAME,COLUMN_NAME,CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS

måske virker den i Access

måske virker den også i MySQL

det er ANSI måden at gøre det på

ellers tror jeg at vi skal over i noget ADO eller DAO specifikt for
at gøre det i Access

og svar
Avatar billede testpilot_dk Nybegynder
03. december 2005 - 15:29 #8
okay, jeg vil prøve det!

Describe table, virker fint i MySQL
Avatar billede testpilot_dk Nybegynder
03. december 2005 - 15:30 #9
hvad gør den egentlig, skal den ikke vide hvilken tabel som den skal finde tingene på
Avatar billede arne_v Ekspert
03. december 2005 - 15:32 #10
DESCRIBE har virket i MySQL siden ruder konge var rude knægt

nyere versioner skulle være ANSI kompatible

hvis du kun skal have for en tabelÆ

SELECT COLUMN_NAME,CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='tabelnavn'
Avatar billede testpilot_dk Nybegynder
03. december 2005 - 15:35 #11
hvad er information_schema
Avatar billede arne_v Ekspert
03. december 2005 - 15:44 #12
alle databaser har deres speciefikke måde at hente oplysninger om tabeller og
felter på

ANSI standaqrden siger at databaser bør have denne logiske måde at gære det på

INFORMATION_SCHEMA er et fiktivt sted at hente denne information via SQL sætninger

en speciel form for VIEW
Avatar billede testpilot_dk Nybegynder
03. december 2005 - 15:50 #13
okay! men det kan jeg heller ikke få til at virke når jeg spørger ned i min Access database!
Avatar billede arne_v Ekspert
03. december 2005 - 17:01 #14
hvilket sprog er din app lavet i ?
Avatar billede testpilot_dk Nybegynder
03. december 2005 - 19:58 #15
C# 


        string sql = "SELECT COLUMN_NAME,CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME= '" + table + "'";
            OpenConnection();
            IDataReader read = GetSQLResult(sql);
            string lenght = "";
            if(read != null)
            {
                while(read.Read())
                {
                    if(read[0].ToString() == "IP")
                    {
                        lenght = read[1].ToString();
                        lenght = lenght.Remove(0, lenght.IndexOf("(") +1 );
                        lenght = lenght.Remove(lenght.IndexOf(")"), 1);
                        break;
                    }
                }

GetSQLResult :::

        public override IDataReader GetSQLResult(string sql)
        {
            try
            {
                OleDbCommand myCommand = new OleDbCommand(sql, cn);
                OleDbDataReader myReader = myCommand.ExecuteReader();
                return myReader;
            }
            catch(Exception ex)
            {
                WriteLog("Failed: " + ex.Message);
                return null;
            }
        }
Avatar billede arne_v Ekspert
03. december 2005 - 20:06 #16
så tror jeg at du er nødt til at hente dem ud med GetOleDbSchemaTable metoden
Avatar billede testpilot_dk Nybegynder
09. december 2005 - 08:10 #17
hvordan skal jeg evt. gører det med Access databasen, ved brug af GetOleDbSchemaTable
Avatar billede arne_v Ekspert
09. december 2005 - 14:44 #18
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Database\\MSAccess\\Test.mdb");
        con.Open();
        string[] criteria = {null, null, null, "TABLE" };
        DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, criteria );
        // hent info ud af dt
        con.Close();
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester