/*
use master
go
if DB_ID('UserBase') is not null
drop database UserBase
create database UserBase
go
use UserBase
go
create table UserTable
(
UserID varchar(10) primary key,
UserName nvarchar(20) not null
)
go
insert into UserTable values('U0001', '成龙')
insert into UserTable values('U0002', '李连杰')
insert into UserTable values('U0003', '甄子丹')
go
select * from UserTable
go
*/
using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.ServiceProcess;
using System.Windows.Forms;
namespace WinFormList
{
public partial class FormList : Form
{
private ComboBox comboBox;
private ListBox listBox;
private ServiceController server;
private SqlConnection sql;
public FormList()
{
InitializeComponent();
comboBox = new ComboBox();
comboBox.Dock = DockStyle.Top;
comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox.SelectedIndexChanged += new EventHandler(comboBox_SelectedIndexChanged);
this.Controls.Add(comboBox);
listBox = new ListBox();
listBox.Dock = DockStyle.Bottom;
listBox.SelectedIndexChanged += new EventHandler(listBox_SelectedIndexChanged);
this.Controls.Add(listBox);
this.StartPosition = FormStartPosition.CenterScreen;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
server = new ServiceController("MSSQLSERVER"); // "MSSQL$SQLEXPRESS"
switch (server.Status)
{
case ServiceControllerStatus.Stopped: // 服务未运行。
server.Start(); // net start mssqlserver
break;
case ServiceControllerStatus.Paused: // 服务已暂停。
server.Continue(); // net continue mssqlserver
break;
}
Run:
{
System.Threading.Thread.Sleep(500);
server.Refresh(); // 通过将属性重置为其当前值来刷新属性值。
}
if (server.Status != ServiceControllerStatus.Running)
goto Run;
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = Environment.MachineName; // builder["Server"]
builder.InitialCatalog = "UserBase"; // builder["Database"]
builder.IntegratedSecurity = true; // builder["Integrated Security"]
builder.TypeSystemVersion = "SQL Server 2000"; // builder["Type System Version"]
//builder.DataSource = string.Format(@"{0}/SQLEXPRESS", Environment.MachineName);
//builder.InitialCatalog = "UserBase";
//builder.IntegratedSecurity = true;
//builder.UserInstance = true;
//builder.TypeSystemVersion = "SQL Server 2005";
sql = new SqlConnection(builder.ConnectionString);
try
{
//SqlCommand cmd = new SqlCommand("select * from UserTable", sql);
SqlCommand cmd = new SqlCommand("select UserID as ID, UserName as Name from UserTable order by ID asc", sql);
cmd.CommandType = CommandType.Text;
if (sql.State == ConnectionState.Closed)
sql.Open();
using (SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
//int id = sdr.GetOrdinal("UserID");
//int name = sdr.GetOrdinal("UserName");
//var query = from record in sdr.Cast<System.Data.Common.DbDataRecord>()
// let ID = record.GetString(id) // let: 范围变量 record 只调用一次 GetString()。
// let Name = record.GetString(name)
// orderby ID ascending
// select new { ID, Name };
//var list = query.ToList();
var list = sdr.Cast<System.Data.Common.DbDataRecord>().ToList();
comboBox.Sorted = true;
comboBox.ValueMember = "ID";
comboBox.DataSource = list.AsReadOnly();
comboBox.DisplayMember = "Name";
listBox.Sorted = true;
listBox.ValueMember = "Name";
listBox.DataSource = list.AsReadOnly();
listBox.DisplayMember = "ID";
}
}
catch
{
if (sql.State == ConnectionState.Open)
sql.Close();
}
}
private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
listBox.Text = comboBox.SelectedValue as string;
}
private void listBox_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox.Text = listBox.SelectedValue as string;
}
}
}