标签:
“DataSource =.\SQLEXPRESS:AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True; User Instance=True”。其中”.\SQLEXPRESS”表示本机上的SQLEXPRESS实例,如果数据库实例名不是SQLEXPRESS,则需要修改。”Database1.mdf”为mdf的文件名。
//使用using,那么conn只能在using的{}内使用,之外就会释放。当然也可以使用try catch语句。
using(
SqlConnection conn = new SqlConnection(
@"Data Source=.\SQLEXPRESS;
AttachDBFilename = |DataDirectory|\Database1.mdf;
Integrated Security = True;
User Instance = True"
)
){
conn.Open();
}
必有的代码:
//加上下面的代码,可以去看数据库中数据的更新情况,否则,即使更新了数据库也是不显示的。
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
if(dataDir.EndsWith(@"\bin\Debug\") ||
dataDir.EndsWith(@"\bin\Release\"))
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData("DataDirectory",dataDir);
}
l cmd.CommandText = “select count(*) from T_Users”;
l int i = Convert.ToInt32(cmd.ExecuteScala());
l cmd.CommandText = “select getdate()”;
l DateTime dt = Convert.ToDataTime(cmd.ExecuteScalar());
l cmd.CommandText = “Insert into T_Users(UserName,Password) output inserted.Id values(‘admin’,’888888’);
l int i = Convert.ToInt32(cmd.ExecuteScalar());
l SqlDataReader reader = cmd.ExecuteReader();
l while(reader.Read())
l {
Console.WriteLine(reader.GetString(1));
l }
reader.GetString(reader.GetOrdinal("UserId")); == reader.GetString(0)
reader.GetString(reader.GetOrdinal("UserName")); == reader.GetString(1)
reader.GetString(reader.GetOrdinal("Password")); == reader.GetString(2)
cmd.Parameters.Add(new SqlParameter("UN", userName));
cmd.Parameters.Add(new SqlParameter("P", password));
l 注意:在同一个连接中,如果SqlDataReader没有关闭,那么不能执行update类型的语句。因为指针还在指着它,是不能被别人访问的。可以再写一个函数,把它放在函数中。
l 连接数据库用创建SQL命令,执行一次就可以了。不要写在循环里面。
l 有关乱码问题:使用nvarchar而不是varchar,插入的汉字之前加N
设置读入时候的字符编码为Default即可。默认就是UTF-8的。
l 添加App.config文件。App.config文件是.Net的通用配置文件,在ASP.Net中也能同样使用。
l 在App.config中添加connectionString段,添加一个add项,用name属性起一个名字(比如DbConnStr),connectionString属性指定连接字符串。
l 在“引用”节点上点右键“添加引用”,找到System.configuration。不是所有.Net中的类都能直接调用,类所在的Assembly要被添加到项目的引用中才可以。
l ConfigurationManager.ConnectionStrings[“DbConnStr”].ConnectionString得到连接字符串。
l 如何改变了位置,只需在App.config文件中将连接字符串改变即可。
Stopwatch sw = new Stopwatch();
sw.Start();
T_UsersTableAdapter adapter = new T_UsersTableAdapter();
adapter.Connection.Open();
for (int i = 0; i < 2000; i++)
{
adapter.Insert(i.ToString(),null,i.ToString(),null);
}
adapter.Connection.Close();
sw.Stop();
MessageBox.Show(sw.Elapsed.ToString());
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
//为Test数据库中的T_Product表与T_Manufacturer表生成数据
string connectionString = "Data Source=.;Initial Catalog=Test;Integrated Security = true";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.Parameters.Add("name", SqlDbType.NVarChar);
cmd.Parameters.Add("address", SqlDbType.NVarChar);
cmd.Parameters.Add("email", SqlDbType.NVarChar);
cmd.Parameters.Add("tel", SqlDbType.VarChar);
cmd.Parameters.Add("model", SqlDbType.NVarChar);
cmd.Parameters.Add("builddate", SqlDbType.Date);
double num = 0;
for (int i = 0; i < 1000; i++)
{
int randomNum = new Random().Next(Int32.MaxValue);
DateTime builddate = new DateTime(1998, 1, 1).AddDays(new Random().Next(10000));
AddDataToManufacturer(cmd, "深圳恒丰塑化材料有限公司" + randomNum, "广东深圳市光明新区" + randomNum, "guangdong" + randomNum + "@163.com", "12345678902" + randomNum, "经销批发" + randomNum, builddate);
Console.WriteLine(string.Format("第{0}条完成......", num+1));
num++;
AddDataToManufacturer(cmd, "北京伊特伟业科技公司" + randomNum, "北京市朝阳区" + randomNum, "yite" + randomNum + "@163.com", "12345678903" + randomNum, "个体经营" + randomNum, builddate);
Console.WriteLine(string.Format("第{0}条完成......", num + 1));
num++;
AddDataToManufacturer(cmd, "苍南县飞翔彩印厂" + randomNum, "浙江苍南县" + randomNum, "cangnian" + randomNum + "@163.com", "12345678901" + randomNum, "生产厂家" + randomNum, builddate);
Console.WriteLine(string.Format("第{0}条完成......", num + 1));
num++;
}
Console.WriteLine("\r\n完成");
Console.WriteLine(string.Format("共添加{0}条记录", num));
stopwatch.Stop();
Console.WriteLine(string.Format("共用{0}时{1}分{2}秒{3}毫秒", stopwatch.Elapsed.Hours,stopwatch.Elapsed.Minutes,stopwatch.Elapsed.Seconds,stopwatch.Elapsed.Milliseconds));
Console.ReadKey();
}
/*
* 共添加3000条记录
* 共用0时0分16秒401毫秒
* 共用0时0分17秒726毫秒
* 共用0时0分16秒960毫秒
*/
public static void AddDataToManufacturer(SqlCommand cmd,string name, string address,string email,string tel,string model,DateTime builddate)
{
cmd.CommandText = @"insert into T_Manufacturer(ManufacturerName,ManufacturerAddress,ManufacturerEmail,ManufacturerTel,BusinessModel,BuildDate) values(@name,@address,@email,@tel,@model,@builddate)";
cmd.Parameters["name"].Value = name;
cmd.Parameters["address"].Value = address;
cmd.Parameters["email"].Value = email;
cmd.Parameters["tel"].Value = tel;
cmd.Parameters["model"].Value = model;
cmd.Parameters["builddate"].Value = builddate;
cmd.ExecuteNonQuery();
}
标签:
原文地址:http://www.cnblogs.com/huangf714/p/5876224.html