我有一個很大的SQL語句,我想在c#中運行,但是,我看到的所有示例都是針對一行長的SQL語句。c#執行大型SQL語句
這是我的C#代碼到目前爲止。在我的代碼後,我已經包含了查詢,我想運行。
C#查詢代碼
private void button4_Click(object sender, EventArgs e)
{
System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection();
conn.ConnectionString = "Driver={Oracle in OraClient11g_home1};" +
"Dbq=" + "database" +
";Uid=" + "admin" + ";Pwd=" + "admin" + ";";
try
{
conn.Open();
OdbcCommand com = new OdbcCommand("select count(*) from user_tables;", conn);
com.CommandType = CommandType.Text;
OdbcDataReader rdr = com.ExecuteReader();
while (rdr.Read())
{
var mystring = rdr.GetString(0);
MessageBox.Show(mystring);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
conn.Close();
}
查詢運行
SELECT user_id,
user_name,
user_name_full,
(SELECT user_name
FROM MD_SITE_USER
WHERE user_id = u.GROUP_ID)
assigned_user_group,
user_or_group,
CASE
WHEN (SELECT o.grant_or_revoke
FROM MD_SITE_APP_ACTION a, MD_SITE_APP_ACTION_OWNER o
WHERE a.action_id = o.action_id
AND a.action_name = 'Admin.start'
AND o.user_id = u.GROUP_ID) = '+'
THEN
'Y'
ELSE
'N'
END
"Assigned By Group?",
CASE
WHEN (SELECT o.grant_or_revoke
FROM MD_SITE_APP_ACTION a, MD_SITE_APP_ACTION_OWNER o
WHERE a.action_id = o.action_id
AND a.action_name = 'Admin.start'
AND o.user_id = u.user_id) = '+'
THEN
'Y'
ELSE
'N'
END
"Assigned By User?"
FROM MD_SITE_USER u
WHERE user_name IS NOT NULL
AND ( CASE
WHEN (SELECT o.grant_or_revoke
FROM MD_SITE_APP_ACTION a,
MD_SITE_APP_ACTION_OWNER o
WHERE a.action_id = o.action_id
AND a.action_name = 'Admin.start'
AND o.user_id = u.GROUP_ID) = '+'
THEN
'Y'
ELSE
'N'
END = 'Y'
OR CASE
WHEN (SELECT o.grant_or_revoke
FROM MD_SITE_APP_ACTION a,
MD_SITE_APP_ACTION_OWNER o
WHERE a.action_id = o.action_id
AND a.action_name = 'Admin.start'
AND o.user_id = u.user_id) = '+'
THEN
'Y'
ELSE
'N'
END = 'Y')
ORDER BY user_or_group, user_name;
什麼問題? – Dan
讓它成爲一條線,或者使用StringBuilder – Guilherme
你在問如何運行這麼長的代碼嗎?您可以在程序中創建該程序並執行該程序。 – Question3CPO