使用C#访问数据库入门
时间:2021-07-01 10:21:17
帮助过:22人阅读
#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 学习