#define WIN
2 // #define NET
3 // ********ACCESS要开类型和版本两个******
4 // #define ACCESS
5 // #define ACCESS_2003
6 // #define ACCESS_2010
7 // ********EXCEL开一个具体版本就行了******
8 // (#define EXCEL)
9 // #define EXCEL_2010
10 // ********************************
11 #define SQLSERVER
12 // (sql2000测试通过)
13 // *******************************
14 // #define MYSQL
15
16 using System;
17 using System.Collections.Generic;
18 using System.Linq;
19 using System.Text;
20 using System.Data;
21 using System.Data.OleDb;
22 using System.Data.SqlClient;
23 // using MySql.Data.MySqlClient;
24 #if NET
25 using System.Web;
26 #endif
27
28 namespace HC
29 {
30 // 操作access等数据库的类
31 class Hc_db
32 {
33 public Hc_db()
34 {
35 }
36 #if SQLSERVER
37 static SqlConnection createConn()
38 #elif MYSQL
39 static MySqlConnection createConn()
40 #else
41 static OleDbConnection createConn()
42 #endif
43 {
44 #if SQLSERVER
45 string s1 = " server=(localdb)\\mssqllocaldb;initial catalog=d1;user ID=sa;password=123456; " ;
46 #endif
47 #if ACCESS_2003
48 string s1 = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " ;
49 #endif
50 #if ACCESS_2010
51 string s1 = " Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " ;
52 #endif
53 #if ACCESS
54 #if NET
55 string s2 =@HttpContext.Current.Server.MapPath( @" ~/data/d1.accdb " );
56 #endif
57 #if WIN
58 string s2 = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)+ @" \data\yangbiao.mdb " ;
59 #endif
60 #endif
61
62 #if EXCEL_2010
63 string s1 = " Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " ;
64 #if NET
65 string s2 =@HttpContext.Current.Server.MapPath( @" ~/data/e1.xlsx " )+ " ;Extended Properties=‘Excel 12.0;HDR=YES‘ " ; // HDR=YES表示有标题
66 #endif
67 #if WIN
68 string s2 =System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)+ @" \data\e1.xlsx " + " ;Extended Properties=‘Excel 12.0;HDR=YES‘ " ; // HDR=YES表示有标题
69 #endif
70 // 说明:
71 // 若要引用完全使用的工作表的范围,请指定后面跟有美元符号的工作表名称。例如:
72 // select * from [Sheet1$]
73 // 若要引用工作表上的特定地址范围,请指定后面跟有美元符号和该范围的工作表名称。例如:
74 // select * from [Sheet1$A1:B10]
75 // 关于IMEX:
76 // 若为 0,则为输出模式,此情况下只能用作写入 Excel;
77 // 若为 1,则为输入模式,此情况下只能用作读取 Excel,并且始终将 Excel 数据作为文本类型读取;
78 // 若为 2,则为连接模式,此情况下既可用作写入、也可用作读取。
79 // 所以若要读取混合数据类型,应该将 IMEX 设置为 1;若误设置为 0,则读取不到任何行;若误设置为 2 或省略,则有些数据读取出来是空白。
80 // 注意:输出模式对应写入、输入模式对应读取。
81 #endif
82 #if MYSQL
83 string s1 = " Database=ipt_authd;Data Source=10.10.XXX.XXX;User Id=XXXX;allow zero datetime=true " ;
84 // 标准写法:myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass";
85 #endif
86 #if SQLSERVER
87 SqlConnection conn = new SqlConnection(s1);
88 #elif MYSQL
89 MySqlConnection conn = new MySqlConnection(s1);
90 #else
91 OleDbConnection conn = new OleDbConnection(s1+ s2);
92 #endif
93 return conn;
94 }
95
96 public static DataTable get_datatable( string s1)
97 {
98 #if SQLSERVER
99 SqlConnection myconn = Hc_db.createConn();
100 SqlDataAdapter myda = new SqlDataAdapter(s1, myconn);
101 #elif MYSQL
102 MySqlConnection myconn = Hc_db.createConn();
103 MySqlDataAdapter myda = new MySqlDataAdapter(s1, myconn);
104 #else
105 OleDbConnection myconn = Hc_db.createConn();
106 OleDbDataAdapter myda = new OleDbDataAdapter(s1, myconn);
107 #endif
108 DataSet myds = new DataSet();
109 try
110 {
111 myconn.Open();
112 myda.Fill(myds, " No1 " );
113 myconn.Close();
114 // myconn.Dispose();
115 return myds.Tables[ " No1 " ];
116 }
117 catch (Exception e1)
118 {
119 throw (e1);
120 }
121 }
122 public static int do_nonquery( string s1)
123 {
124 #if SQLSERVER
125 SqlConnection myconn = Hc_db.createConn();
126 SqlCommand mycomm = new SqlCommand(s1, myconn);
127 #elif MYSQL
128 MySqlConnection myconn = Hc_db.createConn();
129 MySqlCommand mycomm = new MySqlCommand(s1, myconn);
130 #else
131 OleDbConnection myconn = Hc_db.createConn();
132 OleDbCommand mycomm = new OleDbCommand(s1, myconn);
133 #endif
134 try
135 {
136 int c;
137 myconn.Open();
138 c = mycomm.ExecuteNonQuery();
139 myconn.Close();
140 // myconn.Dispose();
141 return c;
142 }
143 catch (Exception e1)
144 {
145 // HttpContext.Current.Response.Write("<script language=‘javascript‘ defer>alert(‘" + e1.ToString() + "‘);</script>");
146 throw (e1);
147 // return false;
148 }
149 }
150 }
151 }
152 // INSERT INTO 表 [(字段1[,字段2[, ...]])]
153 /// /VALUES (值1[,值2[, ...])
154 // string str_sql = "insert into myt1(姓名,性别,年龄) values(‘"+textBox2.Text+"‘,‘"+textBox3.Text+"‘,"+textBox4.Text+")";
以上代码可用作控制台下操作localdb数据库。对于其他的sqlserver,修改第45行信息。
在mvc等web环境下使用,修改前两行即可。
数据库内容如下:
控制台程序如下:
static void Main( string [] args)
{
DataTable dt;
string sql;
sql = " select * from t1 " ;
dt = Hc_db.get_datatable(sql);
for ( int i = 0 ; i < dt.Rows.Count; i++ )
{
for ( int j = 0 ; j < dt.Columns.Count; j++ )
{
Console.Write(dt.Rows[i][j].ToString() + " \t " );
}
Console.WriteLine(); ;
}
Hc_db.do_nonquery( " delete from t1 where xm=‘ls‘ " );
dt = Hc_db.get_datatable(sql);
Console.WriteLine(dt.Rows.Count);
Console.ReadKey();
}
运行结果:
使用C#访问数据库入门
标签:写在前面 date end microsoft loading user mysq ldb 学习
查看更多关于使用C#访问数据库入门的详细内容...