最近在用CodeSmith操作写ACCESS数据库的代码模版,发现CodeSmith默认的字段顺序与ACCESS中表的字段顺序不一致。 首先在ACCESS数据库中建一个测试表Test,并添加ID、Name等几个字段,如下图所示: 然后在CodeSmith中新建一个模版,并循环输出所有字段名 %@ Cod
最近在用CodeSmith操作写ACCESS数据库的代码模版,发现CodeSmith默认的字段顺序与ACCESS中表的字段顺序不一致。
首先在ACCESS数据库中建一个测试表Test,并添加ID、Name等几个字段,如下图所示:
然后在CodeSmith中新建一个模版,并循环输出所有字段名
"<span>C#</span><span>"</span> TargetLanguage=<span>"</span><span>C#</span><span>"</span> ResponseEncoding=<span>"</span><span>UTF-8</span><span>"</span>%> "<span>SourceTable</span><span>"</span> Type=<span>"</span><span>SchemaExplorer.TableSchema</span><span>"</span> Category=<span>"</span><span>Context</span><span>"</span> Description=<span>"</span><span>数据表</span><span>"</span> %> "<span>SchemaExplorer</span><span>"</span> %> "<span>SchemaExplorer</span><span>"</span> %> for(<span>int</span> i=<span>0</span>;i<sourcetable.columns.count> </sourcetable.columns.count>
运行后得到
<span>Age ID IsOK Name Remark Time</span>
我们可以看到,字段是按照字典顺序排序的,而不是实际数据表中的顺序。虽然这不影响什么,但是一想到自动生成的MODEL层的字段和数据表的不对应,总感觉不太爽。
我甚至将SourceTable.Columns[i].ExtendedProperties这个扩展属性全部输出,也没有得到什么有用的信息。
后来无意中,我在.NET的 OleDbConnection.GetOleDbSchemaTable中得到了字段的顺序,新建一个winform项目,代码如下
<span>1</span> <span>string</span> accessConnection = <span>"</span><span>Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=123456;Data Source=c:\\db1.mdb;Persist Security Info=True</span><span>"</span><span>; </span><span>2</span> OleDbConnection connection = <span>new</span><span> OleDbConnection(accessConnection); </span><span>3</span> <span>connection.Open(); </span><span>4</span> DataTable schemaColumns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, <span>new</span> <span>string</span>[] { <span>null</span>, <span>null</span>, <span>"</span><span>test</span><span>"</span>, <span>null</span><span> }); </span><span>5</span> dataGridView2.DataSource =<span> schemaColumns; </span><span>6</span> connection.Close();
我将GetOleDbSchemaTable获取到信息都绑定到一个DataGridView控件中,这样对里面的数据可以有一个比较直观的了解
终于看到了字段真正顺序!那么接下来的事情就比较好办了,我们要在CodeSmith中获取这个SchemaTable,然后根据ORDINAL_POSITION的值重新对SourceTable.Columns进行排序,这样后面编写代码模版的时候,字段顺序就是正常的了。CodeSmith代码如下:
"<span>C#</span><span>"</span> TargetLanguage=<span>"</span><span>C#</span><span>"</span> ResponseEncoding=<span>"</span><span>UTF-8</span><span>"</span>%> "<span>SourceTable</span><span>"</span> Type=<span>"</span><span>SchemaExplorer.TableSchema</span><span>"</span> Category=<span>"</span><span>Context</span><span>"</span> Description=<span>"</span><span>数据表</span><span>"</span> %> "<span>SchemaExplorer</span><span>"</span> %> "<span>SchemaExplorer</span><span>"</span> %> "<span>System.Data.OleDb</span><span>"</span> %> for(<span>int</span> i=<span>0</span>;i<sourcetable.columns.count> <script runat="<span">"<span>template<span>"> <span>//<span>由于SourceTable.Columns的顺序默认是按字段名升序排列,因此需要根据"ORDINAL_POSITION"的值来重新排序 <span>public <span>void<span> FixColumns() { OleDbConnection connection = <span>new<span> OleDbConnection(SourceTable.Database.ConnectionString); connection.Open(); DataTable schemaColumns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, <span>new <span>string[] { <span>null, <span>null, SourceTable.Name, <span>null<span> }); connection.Close(); <span>for(<span>int i=schemaColumns.Rows.Count;i><span>0;i--<span>) { <span>for(<span>int j=<span>0;j<schemaColumns.Rows.Count;j++<span>) { <span>if(Convert.ToInt32(schemaColumns.Rows[j][<span>"<span>ORDINAL_POSITION<span>"].ToString())==<span>i) { <span>int m=<span>0<span>; <span>for(m=<span>0;m<SourceTable.Columns.Count;m++<span>) { <span>if(SourceTable.Columns[m].Name==schemaColumns.Rows[j][<span>"<span>COLUMN_NAME<span>"<span>].ToString()) { <span>break<span>; } } ColumnSchema col=<span>SourceTable.Columns[m]; SourceTable.Columns.RemoveAt(m); SourceTable.Columns.Insert(<span>0<span>,col); } } } } </script></sourcetable.columns.count>
代码不难理解,我用了类似插入排序的思路,从排序最后的字段开始往前查找(即ORDINAL_POSITION值从最大到最小),查找到了后就插入到SourceTable.Columns集合的最前面。这样到最后的结果就是SourceTable.Columns集合按ORDINAL_POSITION值从小到大排序了。

MySQL sesuai untuk pemula untuk mempelajari kemahiran pangkalan data. 1. Pasang alat pelayan dan klien MySQL. 2. Memahami pertanyaan SQL asas, seperti SELECT. 3. Operasi data induk: Buat jadual, masukkan, kemas kini, dan padam data. 4. Belajar Kemahiran Lanjutan: Fungsi Subquery dan Window. 5. Debugging dan Pengoptimuman: Semak sintaks, gunakan indeks, elakkan pilih*, dan gunakan had.

MySQL dengan cekap menguruskan data berstruktur melalui struktur jadual dan pertanyaan SQL, dan melaksanakan hubungan antara meja melalui kunci asing. 1. Tentukan format data dan taip apabila membuat jadual. 2. Gunakan kunci asing untuk mewujudkan hubungan antara jadual. 3. Meningkatkan prestasi melalui pengindeksan dan pengoptimuman pertanyaan. 4. Secara kerap sandaran dan memantau pangkalan data untuk memastikan pengoptimuman keselamatan data dan prestasi.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pembangunan web. Ciri -ciri utamanya termasuk: 1. Menyokong pelbagai enjin penyimpanan, seperti InnoDB dan Myisam, sesuai untuk senario yang berbeza; 2. Menyediakan fungsi replikasi master-hamba untuk memudahkan pengimbangan beban dan sandaran data; 3. Meningkatkan kecekapan pertanyaan melalui pengoptimuman pertanyaan dan penggunaan indeks.

SQL digunakan untuk berinteraksi dengan pangkalan data MySQL untuk merealisasikan penambahan data, penghapusan, pengubahsuaian, pemeriksaan dan reka bentuk pangkalan data. 1) SQL Melaksanakan operasi data melalui Pilih, Masukkan, Kemas kini, Padam Penyataan; 2) Gunakan pernyataan membuat, mengubah, drop untuk reka bentuk dan pengurusan pangkalan data; 3) Pertanyaan kompleks dan analisis data dilaksanakan melalui SQL untuk meningkatkan kecekapan membuat keputusan perniagaan.

Operasi asas MySQL termasuk membuat pangkalan data, jadual, dan menggunakan SQL untuk melakukan operasi CRUD pada data. 1. Buat pangkalan data: createdatabasemy_first_db; 2. Buat Jadual: CreateTableBooks (Idintauto_IncrementPrimaryKey, Titlevarchar (100) NotNull, Authorvarchar (100) NotNull, Published_yearint); 3. Masukkan Data: InsertIntoBooks (Tajuk, Pengarang, Published_year) VA

Peranan utama MySQL dalam aplikasi web adalah untuk menyimpan dan mengurus data. 1.MYSQL dengan cekap memproses maklumat pengguna, katalog produk, rekod urus niaga dan data lain. 2. Melalui pertanyaan SQL, pemaju boleh mengekstrak maklumat dari pangkalan data untuk menghasilkan kandungan dinamik. 3.MYSQL berfungsi berdasarkan model klien-pelayan untuk memastikan kelajuan pertanyaan yang boleh diterima.

Langkah -langkah untuk membina pangkalan data MySQL termasuk: 1. Buat pangkalan data dan jadual, 2. Masukkan data, dan 3. Pertama, gunakan pernyataan CreatedataBase dan createtable untuk membuat pangkalan data dan jadual, kemudian gunakan pernyataan InsertInto untuk memasukkan data, dan akhirnya gunakan pernyataan PILIH untuk menanyakan data.

MySQL sesuai untuk pemula kerana mudah digunakan dan berkuasa. 1.MYSQL adalah pangkalan data relasi, dan menggunakan SQL untuk operasi CRUD. 2. Ia mudah dipasang dan memerlukan kata laluan pengguna root untuk dikonfigurasi. 3. Gunakan Masukkan, Kemas kini, Padam, dan Pilih untuk Melaksanakan Operasi Data. 4. Orderby, di mana dan menyertai boleh digunakan untuk pertanyaan yang kompleks. 5. Debugging memerlukan memeriksa sintaks dan gunakan Jelaskan untuk menganalisis pertanyaan. 6. Cadangan pengoptimuman termasuk menggunakan indeks, memilih jenis data yang betul dan tabiat pengaturcaraan yang baik.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)