回答

收藏

OdbcConnection.GetSchema('淭ABLES'。); 不工作

技术问答 技术问答 488 人阅读 | 0 人回复 | 2023-09-11

我猜不是所有的SQL都是平等创建的。我将深入研究c#中的DSN和ODBC驱动程序,并进行一些尝试。我试图获取由我所知的DSN使用Transoft
3 O1 k0 j3 u  R6 s/ e3 |) qODBC驱动程序定义的数据库中的所有表。我可以连接到它并使用代码获取表:
- d3 X) r$ _% e4 N public void ConnectToData(String dsn)
; C' _( J9 y/ O( r1 i    {
, d+ y6 f  L& y" D        System.Data.Odbc.OdbcConnection conn =
  s- h4 T& C  G: U8 k/ o' L4 y6 x            new System.Data.Odbc.OdbcConnection();
" C, W  D9 m, ?        //conn.ConnectionString = "FIL=MS Access;DSN=" + dsn;& F8 H4 k0 b) W1 d) M
        conn.ConnectionString = "DSN=" + dsn; //dsn equals "Company_Shared"
$ D7 H6 V/ E: M5 [& C6 N        try7 O* @& Q" q  V: m, K  m  N
        {8 L. R' I; r/ n# \% b
            conn.Open();$ w. f9 q( V% X# k5 L+ x
            MessageBox.Show("Connected!");
) A1 V% X/ x% [            lstBoxLogs.Items.Add("Connected");                                6 T, ^+ n0 i5 ?" r8 t' a: E
            DataTable tableschema = conn.GetSchema("TABLES");1 k! _3 Y1 H: h) D2 R$ F! L
            DataSet set = tableschema.DataSet;  ( }% S+ X4 J! x, o; w
            // first column name* h& N4 d6 }; `  D* N
            for (int i = 0; i 它连接正常,并报告表,但不报告我在数据库中查找的表,返回的内容如下:% L. J3 h8 k% {" q! [& j' t
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME TABLE_TYPE REMARKS
. |- _% [7 q3 L+ M- E' m我不确定如何从此信息中获取实际的表名,因此我只能转储每个表中的所有数据(这是我要做的全部)。这是因为我必须阅读transoft数据库使用哪种SQL,它会使conn.GetSchema("TABLES");调用无用吗?
" P( ^% L; S- e3 n                # k5 G3 ?. u# e% L5 }
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则